KR20240001943A - Automatic programming system and method using programming model - Google Patents

Automatic programming system and method using programming model Download PDF

Info

Publication number
KR20240001943A
KR20240001943A KR1020220078884A KR20220078884A KR20240001943A KR 20240001943 A KR20240001943 A KR 20240001943A KR 1020220078884 A KR1020220078884 A KR 1020220078884A KR 20220078884 A KR20220078884 A KR 20220078884A KR 20240001943 A KR20240001943 A KR 20240001943A
Authority
KR
South Korea
Prior art keywords
requirements
model
component
components
models
Prior art date
Application number
KR1020220078884A
Other languages
Korean (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 황수진
Priority to KR1020220078884A priority Critical patent/KR20240001943A/en
Priority to PCT/KR2023/004725 priority patent/WO2024005318A1/en
Publication of KR20240001943A publication Critical patent/KR20240001943A/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design

Landscapes

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

Abstract

정의된 자동화 작업(프로그래밍)에 대해서는 사용자의 개입이 불필요한 요구사항 모델을 통한 프로그래밍 시스템이 개시된다. 상기 프로그래밍 시스템은, 다수의 요구사항 모델의 구조 정의 및 내용 구성을 위한 입력 정보를 입력받는 입력부, 다수의 상기 요구사항 모델간의 불일치 요소가 있는지를 식별하여 불일치 요소가 없으면 다수의 상기 요구사항 모델을 통합하여 통합 모델을 생성하고 상기 통합 모델의 코드 정보를 생성하는 연산부, 및 상기 연간부의 제어에 따라 상기 불일치 구성요소에 해당하는 다수의 상기 요구사항 모델에 대한 정보를 출력하는 전시부를 포함하는 것을 특징으로 한다.For defined automation tasks (programming), a programming system using a requirements model that does not require user intervention is disclosed. The programming system includes an input unit that receives input information for defining the structure and composing contents of multiple requirements models, and identifies whether there are inconsistent elements between the multiple requirements models. If there are no inconsistent elements, the multiple requirements models are generated. An operation unit that integrates to create an integrated model and generates code information of the integrated model, and an exhibition unit that outputs information on a plurality of the requirements models corresponding to the inconsistent components under the control of the annual unit. Do it as

Description

프로그래밍 모델을 이용한 자동프로그래밍 시스템 및 방법{Automatic programming system and method using programming model}Automatic programming system and method using programming model}

본 발명은 자동 프로그래밍 수행 기술에 관한 것으로서, 더 상세하게는 모든 프로그래밍 언어의 표현을 포함하는 프로그래밍 모델을 도입하여 프로그램을 개발하는 과정을 자동화하는 자동 프로그래밍 시스템 및 방법에 대한 것이다.The present invention relates to automatic programming performance technology, and more specifically, to an automatic programming system and method that automates the process of developing a program by introducing a programming model that includes expressions of all programming languages.

기존의 자동 프로그래밍을 수행하는 방법에는 수학적인 명세를 이용하여 수행하는 방법(Program Synthesis), 특정한 영역에서는 유효하지만 일반화되지 못하는, 특정 관점에서 구성된 프로그램의 조각을 조합하는 방법(Domain specific programming) 등이 있다. 이러한 방법은 완전한 자동화라고 보기 어렵다. Existing methods of performing automatic programming include a method using mathematical specifications (Program Synthesis) and a method of combining pieces of a program constructed from a specific perspective that are effective in a specific domain but cannot be generalized (Domain specific programming). there is. It is difficult to consider this method as complete automation.

전자는 사용자가 요구사항 명세을 제공하면, 그 요구사항 명세를 이용하여 프로그래밍을 하는 과정에서 사용자의 개입이 요구되었고, 후자는 미리 정의된 특정한 기능에 대해서만 부분적인 자동화가 가능했기 때문이다. In the former, when the user provided a requirements specification, user intervention was required in the process of programming using the requirements specification, and in the latter, partial automation was possible only for specific predefined functions.

이러한 단점을 보완하는 방법으로 인공지능(Artificial Intelligence)을 이용하는 방법이 존재하지만, 이러한 방법 역시 경험적 데이터에 기반한 확률적인 접근 방법이다. 따라서, 여전히 사용자의 개입이 필요할 수 밖에 없다. 왜냐하면, 확률적인 접근은 아무리 사용자가 개입할 확률이 적더라도 그 확률은 존재하기 때문이다.There is a method using artificial intelligence to compensate for these shortcomings, but this method is also a probabilistic approach based on empirical data. Therefore, user intervention is still necessary. This is because in a probabilistic approach, no matter how small the probability of user intervention, the probability exists.

1. 한국공개특허번호 제10-2019-0025261호1. Korean Patent Publication No. 10-2019-0025261

본 발명은 위 배경기술에 따른 문제점을 해소하기 위해 제안된 것으로서, 프로그래밍 모델을 이용하여 사용자가 요구사항을 정의하는 것만으로 프로그램을 자동으로 완성할 수 있는 프로그래밍 시스템 및 방법을 제공하는데 그 목적이 있다.The present invention was proposed to solve the problems caused by the above background technology, and its purpose is to provide a programming system and method that can automatically complete a program just by the user defining requirements using a programming model. .

본 발명은 위에서 제시된 과제를 달성하기 위해 프로그래밍 모델을 이용하여 사용자가 요구사항 모델을 정의함으로써 자동으로 프로그래밍을 수행하는, 요구사항 모델을 통한 프로그래밍 시스템을 제공한다. 상기의 프로그래밍 모델이라 함은 프로그램의 제어구조를 수학적으로 표현할 수 있는 모델을 의미한다. The present invention provides a programming system through a requirements model in which a user automatically performs programming by defining a requirements model using a programming model to achieve the tasks presented above. The above programming model refers to a model that can mathematically express the control structure of a program.

여기서 제어구조는 순차(Sequence), 선택(Selection), 반복(Loop)으로 구성되는 논리(Logic)이다. 프로그램의 실행은 제어구조라는 문맥상에서, 정의된 데이터에 어떠한 행위를 통해 새로운 값을 할당하는 것이다. Here, the control structure is logic consisting of sequence, selection, and loop. Executing a program involves assigning a new value to defined data through some action in the context of a control structure.

즉, 프로그램은 행위를 제어구조를 이용하여 구조화한 것이다. 여기서 행위는 프로그램의 실행명령과 같이 하나의 문장으로 구성될 수도 있고, 프로그램의 조각으로 구성될 수도 있다. 그러므로 프로그램은 프로그램을 구성하는 모든 제어구조 속에서 의도한 위치에 행위를 위치시키는 것이다. 프로그래밍 모델은 프로그램을 구성하고 있는 제어구조를 수학적 모델로 표현하여, 데이터와 행위들을 수학적 표현으로 구조화한 모델이다.In other words, a program structures its actions using a control structure. Here, the action may consist of a single sentence, such as a program execution command, or it may consist of a fragment of a program. Therefore, a program places actions in the intended location within all the control structures that make up the program. A programming model is a model that expresses the control structure that makes up the program as a mathematical model and structures data and actions in mathematical expressions.

상기의 요구사항 모델이라 함은 사용자의 요구사항을 프로그래밍 모델을 이용하여 표현한 것을 의미한다. 본 발명은 상기의 요구사항 모델을 사용자가 구성하면, 이를 자동으로 통합하여 통합 모델을 구성하고, 요구사항 모델 및 통합 모델을 자동으로 검증하고, 상기의 통합 모델에 상응하는 코드를 생성하는 프로그래밍 시스템을 제공한다.The above requirements model means that the user's requirements are expressed using a programming model. The present invention is a programming system that automatically integrates the above requirements model when the user configures it to form an integrated model, automatically verifies the requirements model and the integrated model, and generates code corresponding to the integrated model. provides.

상기 프로그래밍 시스템은,The programming system is,

다수의 요구사항 모델의 구조 정의 및 내용 구성을 위한 입력 정보를 입력받는 입력부;An input unit that receives input information for defining the structure and configuring content of a plurality of requirements models;

다수의 상기 요구사항 모델간의 불일치 요소가 있는지를 식별하여 불일치 요소가 없으면 다수의 상기 요구사항 모델을 통합하여 통합 모델을 생성하고 상기 통합 모델의 코드 정보를 생성하는 연산부; 및an operation unit that identifies whether there are inconsistencies between the multiple requirements models and, if there are no inconsistencies, integrates the multiple requirements models to create an integrated model and generates code information of the integrated model; and

상기 연간부의 제어에 따라 상기 불일치 구성요소에 해당하는 다수의 상기 요구사항 모델의 구성요소 정보를 출력하는 전시부;를 포함하는 것을 특징으로 한다.and an exhibition unit that outputs component information of a plurality of the requirements models corresponding to the mismatched components under the control of the annual unit.

이때, 상기 연산부는, 다수의 상기 요구사항 모델의 구조 정의를 수행하는 모델 구조 정의 모듈; 조각 코드 또는 단일문장을 이용하여 다수의 상기 요구사항 모델의 내용 구성을 수행하는 구성 모듈; 다수의 상기 요구사항 모델들을 통합하는 구조 통합 모듈; 상기 다수의 상기 요구사항 모델간 불일치 구성요소가 있는지를 식별하는 불일치 요소 식별 모듈; 및 상기 불일치 구성요소가 없으면 상기 코드 정보를 생성하는 코드 생성 모듈;을 포함하는 것을 특징으로 한다. At this time, the calculation unit includes a model structure definition module that performs structure definition of a plurality of the requirements models; A configuration module that configures the contents of a plurality of the requirements models using fragment codes or single sentences; a structural integration module that integrates a plurality of the requirements models; an inconsistent element identification module that identifies whether there are inconsistent components between the plurality of requirements models; and a code generation module that generates the code information if there is no mismatch component.

또한, 상기 요구사항 모델의 구조는Additionally, the structure of the requirements model is

반복 (명제) { }repetition (proposition) { }

선택 (명제) { } choice (proposition) { }

순차 { } (여기서, 반복, 선택, 순차는 논리 연산자이고, 괄호 및 중괄호는 명제와 블록을 표현한다)을 포함하며, 상기 조각 코드 및 단일 문장은 상기의 논리 연산자로 구성되는 요구사항 모델 구조의 최하단의 중괄호내에 있는 것을 특징으로 한다.Contains a sequence { } (where repetition, selection, and sequence are logical operators, and parentheses and braces represent propositions and blocks) , and the fragment code and single statement are the requirements model structure consisting of the above logical operators. It is characterized by being within the curly brackets at the bottom.

또한, 최하단의 상기 중괄호는 상기 중괄호내 더 이상의 중괄호가 없는 중괄호인 것을 특징으로 한다.In addition, the brace at the bottom is characterized by being a brace without any further braces within the brace.

또한, 상기 불일치 요소 식별 모듈은 상기 다수의 상기 요구사항 모델간 불일치 구성요소가 있으면 상기 불일치한 구성요소를 수정하도록 표시하는 안내 정보를 생성하는 것을 특징으로 한다.Additionally, the inconsistent element identification module is characterized in that, if there are inconsistent components between the plurality of requirements models, it generates guidance information indicating to correct the inconsistent components.

또한, 상기 구조 정의는 논리 연산자를 이용하여 정의되는 것을 특징으로 한다.Additionally, the structure definition is characterized by being defined using logical operators.

또한, 상기 구조 정의는 각 구성요소의 위치 설정, 각 구성요소의 이름 설정, 각 구성요소의 논리 연산자 설정, 및 각 구성요소의 데이터 설정을 포함하는 것을 특징으로 한다. 여기서 각 구성요소의 위치, 이름, 논리 연산자, 여러 용도의 데이터는 각 구성요소의 멤버가 된다.In addition, the structure definition is characterized in that it includes setting the position of each component, setting the name of each component, setting the logical operator of each component, and setting the data of each component. Here, the location, name, logical operator, and data for various purposes become members of each component.

또한, 상기 각 구성요소의 멤버 및 상기 멤버에 대응되는 코드는 미리 룩업테이블로 구성되는 것을 특징으로 한다.In addition, the members of each component and the codes corresponding to the members are characterized in that they are configured in advance as a look-up table.

또한, 상기 각 구성요소는 가장 아래 계층의 최하위 구성요소, 상기 구성요소의 인접한 상위에 놓이는 차상위 구성요소, 차상위 구성요소를 포함한 상위에 놓이는 상위 구성요소, 임의의 구성요소의 인접한 하위에 놓이는 차하위 구성요소, 차하위 구성요소를 포함하여 하위에 놓이는 하위 구성요소, 상기 각 구성요소의 가장 상위에 놓이는 최상위 구성요소, 상기 각 구성요소의 가장 하위에 놓이는 최하위 구성요소로, 구성요소 간의 계층적인 관계를 구분한다.In addition, each of the components includes the lowest level component of the lowest layer, the next-highest component placed at the adjacent top of the component, the top component placed at the top including the next-highest level component, and the second-lowest component placed at the adjacent bottom of any component. Components, lower-level components including lower-level components, the highest-level component at the top of each component, and the lowest-level component at the bottom of each component, which is a hierarchical relationship between components. distinguish between

또한, 상기 각 구성요소가 동일한 상기 차상위 구성요소 아래에 위치되는 구성요소 간의 순서를 순차적 관계로 구분하는 것을 특징으로 한다.In addition, each component is characterized by dividing the order of components located under the same higher-level component into a sequential relationship.

또한, 상기 각 구성요소의 멤버인 이름은 자동 프로그래밍 과정 상에서 구성요소를 구분하는 고유한 식별자로 사용되는 것을 특징으로 한다.In addition, the member name of each component is used as a unique identifier to distinguish the component during the automatic programming process.

또한, 상기 각 구성요소는 명제 및 구성요소와 관계된 데이터를 포함하는 것을 특징으로 한다.In addition, each of the components is characterized in that it includes data related to the proposition and the component.

또한, 상기 통합은 동일한 이름의 구성요소를 중심으로 이루어지고, 상기 논리 연산자, 상기 명제, 상기 데이터를 포함하는 상기 각 구성요소의 멤버는 동일한 이름의 구성요소에 대해서만 통합되고, 동일한 이름이 존재하지 않는 구성요소는 그대로 유지되는 것을 특징으로 한다.In addition, the integration is centered around components with the same name, and the members of each component, including the logical operator, the proposition, and the data, are integrated only for components with the same name, and the members of each component, including the logical operator, the proposition, and the data, are integrated only for components with the same name. Components that are not present are characterized in that they are maintained as is.

또한, 상기 각 구성요소는 수학식 모델로 표현되는 것을 특징으로 한다.In addition, each of the above components is characterized by being expressed as a mathematical model.

다른 한편으로, 본 발명의 다른 일실시예는, (a) 입력부가 다수의 요구사항 모델의 구조 정의 및 내용 구성을 위한 입력 정보를 입력받는 단계; (b) 연산부가 다수의 상기 요구사항 모델 간의 불일치 요소가 있는지를 식별하여 불일치 요소가 없으면 다수의 상기 요구사항 모델을 통합하여 통합 모델을 생성하고 상기 통합 모델의 코드 정보를 생성하는 단계; 및 (c) 전시부가 상기 연산부의 제어에 따라 상기 불일치 구성요소에 해당하는 다수의 상기 요구사항 모델에 대한 상기 요구사항 모델의 구성요소 정보를 출력하는 단계;를 포함하는 것을 특징으로 하는 자동 프로그래밍 방법을 제공한다.On the other hand, another embodiment of the present invention includes: (a) an input unit receiving input information for defining the structure and configuring content of a plurality of requirements models; (b) a calculation unit identifying whether there are inconsistencies between the multiple requirements models, and if there are no inconsistencies, integrating the multiple requirements models to create an integrated model and generating code information for the integrated model; and (c) an display unit outputting component information of the requirements model for a plurality of the requirements models corresponding to the mismatched components under the control of the calculation unit. provides.

이때, 상기 (b) 단계는, 모델 구조 정의 모듈이 다수의 상기 요구사항 모델의 구조 정의를 수행하는 단계; 구성 모듈이 조각 코드 또는 단일문장을 이용하여 다수의 상기 요구사항 모델의 내용 구성을 수행하는 단계; 구조 통합 모듈이 다수의 상기 요구사항 모델간 통합하는 단계; 불일치 요소 식별 모듈이 다수의 상기 요구사항 모델간 불일치 구성요소가 있는지를 식별하는 단계; 및 코드 생성 모듈이 상기 불일치 구성요소가 없으면 상기 코드 정보를 생성하는 단계;를 포함하는 것을 특징으로 한다.At this time, step (b) includes a model structure definition module performing structure definition of a plurality of the requirements models; A configuration module performing content configuration of a plurality of the requirements models using fragment codes or single sentences; A structural integration module integrating a plurality of the requirements models; identifying, by an inconsistency element identification module, whether there are inconsistency components between a plurality of the requirements models; and generating, by a code generation module, the code information if the mismatched component does not exist.

또한, 다수의 상기 요구사항 모델은 각 구성요소의 멤버를 기준으로 분류 및 관리되는 것을 특징으로 한다.In addition, a number of the requirements models are characterized in that they are classified and managed based on the membership of each component.

또 다른 한편으로, 본 발명의 또 다른 일실시예는 요구사항 모델을 통한 프로그래밍 방법을 실행시키기 위한 프로그램을 저장한 컴퓨터 판독 가능 저장매체를 제공한다.On the other hand, another embodiment of the present invention provides a computer-readable storage medium storing a program for executing a programming method using a requirements model.

본 발명에 따르면, 코드의 모든 구조와 내용을 수학적으로 표현하고 관계화 할 수 있으며, 이를 통해 기계는 개별 요구사항 모델을 통합하고, 문법적 통합적 오류를 검출하고, 코드를 자동으로 생성할 수 있다.According to the present invention, all the structure and content of the code can be expressed and related mathematically, which allows the machine to integrate individual requirements models, detect syntactic and integrated errors, and automatically generate code.

또한, 본 발명의 다른 효과로서는 각 구성요소에 앞서 설명한 내용을 구성하는 방법과 동일하게 자연어로 구성된 설명을 구성요소의 멤버로 추가가 가능하며, 이는 설명을 수학적인 논리로 구조화된 형태로 관계화할 수 있음을 의미하고, 소프트웨어 개발과 관계된 모든 산출물을 수학적으로 체계화된 시스템으로 관리가 가능하다는 점을 들 수 있다.In addition, another effect of the present invention is that a description composed of natural language can be added as a member of the component in the same way as the method of configuring the content previously described for each component, which allows the description to be related in a structured form using mathematical logic. This means that all outputs related to software development can be managed through a mathematically structured system.

또한, 본 발명의 또 다른 효과로서는 프로그래밍을 다른 사람이 만들어 놓은 요구사항 모델, 요구사항 모델의 구조, 요구사항 모델의 내용을 각각 도입하고 조합하여 프로그램을 완성하는 기능을 지원할 수 있다는 점을 들 수 있다.In addition, another effect of the present invention is that programming can support the function of completing a program by introducing and combining the requirements model, structure of the requirements model, and contents of the requirements model created by others. there is.

또한, 본 발명의 또 다른 효과로서는 요구사항 모델, 요구사항 모델의 구조, 요구사항 모델의 내용을 개별 매매가 가능하고, 이러한 매매를 수행하는 온라인/ 오프라인 플랫폼의 운영을 가능하게 할 수 있다는 점을 들 수 있다.In addition, another effect of the present invention is that it is possible to individually sell the requirements model, the structure of the requirements model, and the contents of the requirements model, and it is possible to operate an online/offline platform that performs such trading. You can.

이러한 발명의 효과가 가능한 것은 요구사항 모델을 구성하는데 사용되는 프로그래밍 모델이, 완벽하게 프로그래밍 언어를 수학적인 모델로 대체할 수 있기 때문이다. 프로그래밍 언어는 일반적인 언어의 사용과 유사하기 때문에, 명확하게 기술을 하더라도 문장 간의 관계를 정확하게 표현하는 것이 어렵다. 어느 부분이 서로 접하는 부분이고 어느 부분이 동일한 정보인지 일일이 설명하기도 어렵고, 구조적인 형태로도 표현이 불가능하다. 수학적 표현의 장점은 어느 기호가 동일한 기호이고 기호 간에 어떠한 관계가 설정되어 있는지 명확하게 파악할 수 있다는 것이다.The effect of this invention is possible because the programming model used to construct the requirements model can completely replace the programming language with a mathematical model. Because programming languages are similar to the use of general languages, it is difficult to accurately express the relationships between sentences even if they are clearly described. It is difficult to explain individually which parts are in contact with each other and which parts have the same information, and it is impossible to express them in a structural form. The advantage of mathematical expressions is that it is possible to clearly understand which symbols are the same symbol and what relationships are established between the symbols.

프로그램의 모든 의미는 물리적으로 회로상에서 표현된다. 회로는 0, 1의 데이터 상태를 명령문을 통해서 변경시킴으로써 의미를 갖는 행위를 수행한다. 이러한 명령문은 AND, OR, NOT, GOTO 라는 논리 연산자를 이용하여 구조화됨으로써 프로그램이 된다. 구조적 프로그래밍(Structured Programming)의 개념에서 회로상의 논리 연산자는 순차(Sequence), 선택(Selection), 반복(Loop)라는 제어 구조로 프로그램의 명령문들을 구조화한다. All meaning of a program is physically expressed on a circuit. The circuit performs meaningful actions by changing the data states of 0 and 1 through statements. These statements become programs by being structured using logical operators such as AND, OR, NOT, and GOTO. In the concept of Structured Programming, logical operators on a circuit structure program statements with control structures called Sequence, Selection, and Loop.

각각의 제어 구조를 조합함으로써 AND, OR, NOT, GOTO의 논리 연산자를 이용한 프로그램의 구조와 동등하게 표현할 수 있다. 그러므로 구조적 프로그래밍의 제어 구조 간의 관계를 수학적으로 표현하면, 회로상의 모든 논리 구조를 표현할 수 있는 것과 동일하다. By combining each control structure, it can be expressed equivalently to the structure of a program using logical operators such as AND, OR, NOT, and GOTO. Therefore, mathematically expressing the relationship between control structures in structured programming is equivalent to expressing all logical structures in a circuit.

본 발명에서는 이러한 제어 구조 간의 관계를 수학적으로 표현하는 모델을 도입하였으므로, 모든 프로그래밍 언어가 갖는 제어구조를 수학적으로 표현할 수 있다. Since the present invention introduces a model that mathematically expresses the relationship between these control structures, the control structures of all programming languages can be expressed mathematically.

또한, 프로그래밍 모델이 프로그래밍 언어마다 갖는 명령문 및 데이터의 차별성을 포용하면 프로그래밍 모델은 모든 프로그래밍 언어의 특징을 통합하는 표현이 될 수 있다. 결국 프로그래밍 언어의 제어 구조 간의 관계를 표현하는 수학적인 모델을 도입함으로써 본 발명에서 설명하는 모든 방법들이 유도되었다.Additionally, if the programming model embraces the differences in statements and data that each programming language has, the programming model can become an expression that integrates the characteristics of all programming languages. Ultimately, all methods described in the present invention were derived by introducing a mathematical model that expresses the relationship between the control structures of the programming language.

기존의 수학적인 모델링을 통해서는 이렇게 되지 못했던 이유는 제어 구조 간의 관계를 수학적으로 표현하지 못했기 때문이다. 현재까지 알려진 가장 광범위하고 널리 쓰이는 수학적 표현은 튜링머신(Turing Machine)이다. The reason why this could not be achieved through existing mathematical modeling was because the relationship between control structures could not be expressed mathematically. The most extensive and widely used mathematical expression known to date is the Turing Machine.

튜링머신은 임의의 프로그램이 있다고 가정했을 때, 초기값을 주고 그 프로그램을 실행함으로써 얻게 되는 결과 데이터를 통해서 모델링을 수행하는 방법이다. 즉, 프로그램의 실행에 의한 데이터의 천이(Transition) 관계를 모델링하는 것이다. A Turing machine is a method of performing modeling through the result data obtained by giving initial values and executing the program, assuming that there is a random program. In other words, it models the transition relationship of data due to program execution.

이러한 모델링 방법은 제어 구조가 상이하지만 동일한 결과를 도출하는 프로그램 간의 제어 구조의 차이를 구분하지 못한다. 즉, 제어 구조에 대해 비결정성을 갖는다. 이것은 제어 구조의 관계를 명확하게 규정짓지 못함을 의미하고, 결국 모델과 코드 간의 대응관계를 모호하게 한다. 그렇기 때문에 이러한 모델링 개념에 기반한 수학적 명세를 이용한 통합(Program Synthesis) 는 자동프로그래밍을 실현하지 못했다.This modeling method cannot distinguish differences in control structure between programs that have different control structures but produce the same results. In other words, it has non-determinism regarding the control structure. This means that the relationship of the control structure cannot be clearly defined, which ultimately makes the correspondence between the model and code ambiguous. Therefore, program synthesis using mathematical specifications based on this modeling concept failed to realize automatic programming.

도 1은 본 발명의 일실시예에 따른 프로그래밍 시스템의 구성 블럭도이다.
도 2는 도 1에 도시된 연산부의 세부 구성 블럭도이다.
도 3은 본 발명의 일실시예에 따른 요구사항 모델을 통한 프로그래밍 개념도이다.
도 4는 본 발명의 일실시예에 따른 요구사항 모델을 통한 프로그래밍 과정을 보여주는 흐름도이다.
도 5는 본 발명의 일실시예에 따른 코드의 예시이다.
도 6은 본 발명의 일실시예에 따른 논리 연산자를 생략한 구성요소 간의 위치관계를 표현한 예시이다.
도 7은 본 발명의 일실시예에 따른 구성요소의 이름과 위치관계로만 표현된 요구사항 모델의 예시이다.
도 8은 도 7과 함께 요구사항 모델의 정의와 통합 등의 개념을 설명하기 위한 요구사항 모델의 예시이다.
1 is a block diagram of a programming system according to an embodiment of the present invention.
FIG. 2 is a detailed block diagram of the operation unit shown in FIG. 1.
Figure 3 is a conceptual diagram of programming through a requirements model according to an embodiment of the present invention.
Figure 4 is a flowchart showing a programming process through a requirements model according to an embodiment of the present invention.
Figure 5 is an example of code according to an embodiment of the present invention.
Figure 6 is an example of positional relationships between components omitting logical operators according to an embodiment of the present invention.
Figure 7 is an example of a requirements model expressed only in the names and positional relationships of components according to an embodiment of the present invention.
Figure 8 is an example of a requirements model to explain concepts such as definition and integration of the requirements model together with Figure 7.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 상세한 설명에 구체적으로 설명하고자 한다. 그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.Since the present invention can be modified in various ways and can have various embodiments, specific embodiments will be illustrated in the drawings and described in detail in the detailed description. However, this is not intended to limit the present invention to specific embodiments, and should be understood to include all changes, equivalents, and substitutes included in the spirit and technical scope of the present invention.

각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 제 1, 제 2등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. When describing each drawing, similar reference numerals are used for similar components. Terms such as first, second, etc. may be used to describe various components, but the components should not be limited by the terms. The above terms are used only for the purpose of distinguishing one component from another.

예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. "및/또는" 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.For example, a first component may be referred to as a second component, and similarly, the second component may be referred to as a first component without departing from the scope of the present invention. The term “and/or” includes any of a plurality of related stated items or a combination of a plurality of related stated items.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미가 있다. Unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as generally understood by a person of ordinary skill in the technical field to which the present invention pertains.

일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않아야 한다.Terms defined in commonly used dictionaries should be interpreted as having a meaning consistent with the meaning in the context of the related technology, and unless clearly defined in the present application, should not be interpreted in an ideal or excessively formal sense. It shouldn't be.

이하 첨부된 도면을 참조하여 본 발명의 일실시예에 따른 요구사항 모델을 통한 자동 프로그래밍 시스템 및 방법을 상세하게 설명하기로 한다.Hereinafter, an automatic programming system and method using a requirements model according to an embodiment of the present invention will be described in detail with reference to the attached drawings.

본 발명의 일실시예에 따른 자동 프로그래밍은 다음의 특성을 갖는다. Automatic programming according to an embodiment of the present invention has the following characteristics.

η사용자의 요구사항 모델을 자동으로 통합해주는 방법을 제공한다.ηProvides a method to automatically integrate the user's requirements model.

Figure pat00001
사용자의 요구사항 모델에 대한 불일치 구성요소를 식별해준다.
Figure pat00001
Identifies inconsistent components to the user's requirements model.

Figure pat00002
요구사항 모델의 구조와 내용을 코드와 대응시킨다(모델 통합이 완료되면 통합된 코드를 얻는다)
Figure pat00002
Match the structure and contents of the requirements model with the code (once model integration is complete, the integrated code is obtained)

④ 요구사항 모델의 구조와 내용이 수학적으로 표현된다(통합 및 검증 알고리즘이 존재한다)④ The structure and contents of the requirements model are expressed mathematically (integration and verification algorithms exist)

프로그램을 얼마나 자유롭게 구현하느냐 하는 것은 프로그램을 구성하는 지식을 사용자가 얼마나 많이 알고 있는가에 있다. 사용자가 자신에게 필요한 프로그램의 용도 정도만 알고 있다면, 완성된 프로그램을 선택할 수 있다. 사용자가 프로그램의 구조를 변형할 수 있는 지식을 갖고 있다면, 사용하는 목적에 따라서 완성된 모듈을 차용하여 프로그램의 구조를 변경할 수 있다. 사용자가 프로그램을 구성하는 모든 지식을 갖고 있다면 프로그램을 처음부터 끝까지 새롭게 구성할 수 있다. How freely a program can be implemented depends on how much knowledge the user has that constitutes the program. As long as the user knows the purpose of the program that he or she needs, he or she can select a completed program. If a user has the knowledge to modify the structure of a program, he or she can change the structure of the program by borrowing a completed module depending on the purpose of use. If a user has all the knowledge to construct a program, he or she can construct the program from start to finish.

본 발명의 일실시예는 이러한 모든 사용자에게 프로그램에 대한 지식을 정의된 논리식인 요구사항 모델로 구성하는 방법을 사용하게 함으로써 논리 조각들을 통합하고 검증하는 것에 대해서 기계적인 자동화의 유용성을 제공한다. 사용자가 프로그램에 대해서 잘 알지 못한다면, 프로그램에 구성되는 기능이 사용자가 원하는 기능으로 구성되었는지 알 수 없다. 그러므로, 앞서 설명한 바와 같이 사용자는 자신이 아는 지식을 기반으로 프로그램을 선택하거나 일부만 구성하거나 전부를 구성할 수 있다. 공상과학 영화에서처럼 사용자가 알지못하는 기능을 프로그래밍 기계가 알아서 구현하는 것은 자동화에 대한 잘못된 편견이다. 이러한 상황은 다만 프로그래밍 기계가 제공한 기능에 사용자가 만족함을 의미할 뿐이다.One embodiment of the present invention provides all such users with the usefulness of mechanical automation for integrating and verifying the logic pieces by allowing them to use a method to organize knowledge about the program into a requirements model, which is a defined logical expression. If the user does not know the program well, he or she cannot know whether the functions included in the program are the functions the user wants. Therefore, as described above, the user can select a program, configure only part of the program, or configure the entire program based on his or her knowledge. As in science fiction movies, it is a misconception about automation that a programming machine automatically implements functions that the user does not know about. This situation only means that the user is satisfied with the functions provided by the programming machine.

따라서, 자동 프로그래밍 개념은 요구사항의 정의와 프로그래밍의 정의에서 출발된다. 사용자가 프로그래밍 기계에게 제공해야 하는 요구사항 모델은 어떻게 구성되고 프로그래밍 기계는 자동으로 어떤 역할을 수행해야 하는가가 본 발명의 주요 개념이다. Therefore, the concept of automatic programming starts from the definition of requirements and programming. The main concept of the present invention is how the requirements model that the user must provide to the programming machine is constructed and what roles the programming machine should automatically perform.

도 1은 본 발명의 일실시예에 따른 프로그래밍(즉, 컴퓨팅) 시스템(100)의 구성 블럭도이다. 도 1을 참조하면, 프로그래밍 시스템(100)은, 다수의 요구사항 모델의 구조 정의 및 내용 구성을 위한 입력 정보를 입력받는 입력부(110), 요구사항 모델간의 불일치 요소가 있는지를 식별하여 불일치 요소가 없으면 다수의 요구사항 모델을 통합하여 코드를 생성하는 연산부(120), 연산부(120)의 제어에 따라 상기 불일치 요소에 해당하는 다수의 상기 요구사항 모델들에 대한 불일치 정보를 출력하는 전시부(130), 및 요구사항 모델과 관계된 정보를 저장하는 저장부(140) 등을 포함하여 구성될 수 있다.Figure 1 is a block diagram of a programming (i.e. computing) system 100 according to an embodiment of the present invention. Referring to FIG. 1, the programming system 100 identifies whether there are inconsistency elements between the input unit 110 and the requirements models, which receives input information for defining the structure and configuring the contents of a plurality of requirements models, and determines whether the inconsistency elements are present. If not, a calculation unit 120 that generates a code by integrating a plurality of requirements models, and an exhibition unit 130 that outputs discrepancy information about the plurality of requirements models corresponding to the discrepancy element under the control of the calculation unit 120. , and a storage unit 140 that stores information related to the requirements model.

입력부(110)는 사용자의 명령을 입력받는 기능을 수행한다. 물론, 입력받은 입력정보를 디지털 정보로 변환할 수도 있다. 입력 정보는 문자가 될 수 있으나, 이에 한정되는 것은 아니며, 음성 또는 행위가 될 수 있다. 이를 위해, 입력부(110)는, 키보드, 마이크, 터치 스크린, 카메라, DSP(Digital Signal Processor) 등을 포함하여 구성될 수 있다.The input unit 110 performs the function of receiving user commands. Of course, the received input information can also be converted into digital information. Input information may be text, but is not limited to this, and may be voice or action. To this end, the input unit 110 may be configured to include a keyboard, microphone, touch screen, camera, DSP (Digital Signal Processor), etc.

연산부(120)는 다수의 상기 요구사항 모델간의 불일치 요소가 있는지를 식별하여 불일치 요소가 없으면 다수의 상기 요구사항 모델을 통합하여 코드를 생성하는 기능을 수행한다. 부연하면, 사용자가 요구사항 모델을 구조 정의와 내용 구성 순으로 논리화하면, 연산부(120)는 요구사항 모델의 구조를 통합하고 요구사항 모델 간의 불일치 요소가 존재하면 그것을 식별하여 전시부(130)을 통해 사용자에게 알려준다. The calculation unit 120 performs a function of identifying whether there are inconsistencies between the multiple requirements models and, if there are no inconsistencies, generating a code by integrating the multiple requirements models. In other words, when the user logicalizes the requirements model in the order of structure definition and content composition, the operation unit 120 integrates the structure of the requirements models and identifies inconsistencies between the requirements models if they exist, and displays the display unit 130. Notifies the user through

이에 따라, 사용자는 입력부(110)를 이용하여 요구사항 모델을 수정한다. 이러한 과정을 반복하여 사용자가 더 이상 요구사항 모델을 구성하지 않고, 프로그래밍 기계가 불일치 요소를 식별하지 않는다면, 연산부(120)는 현재 구성된 요구사항 모델들을 통합하여 코드 정보를 생성한다. 따라서, 사용자는 모든 요구사항 모델이 올바르게 반영된 코드를 얻게 된다.Accordingly, the user modifies the requirements model using the input unit 110. By repeating this process, if the user no longer configures the requirements model and the programming machine does not identify inconsistent elements, the operation unit 120 generates code information by integrating the currently configured requirements models. Therefore, users receive code that correctly reflects all requirements models.

코드는 주로 실행 프로그램을 만드는 과정에서 이용되며, 컴퓨터 프로그램을 사람이 읽을 수 있는 프로그래밍 언어로 기술한 텍스트 파일이 될 수 있다.Code is mainly used in the process of creating an executable program, and can be a text file that describes a computer program in a human-readable programming language.

전시부(130)는 연산부(120)의 제어에 따라 불일치 요소에 해당하는 요구사항 모델에 대한 요구사항 정보를 출력하는 기능을 수행한다. 물론, 사용자에게 입력 정보를 입력하는 화면, 입력을 안내하는 안내 화면, 실행하는 실행 화면 등을 제공할 수 있다. 전시부(130)는 LCD(Liquid Crystal Display), LED(Light Emitting Diode) 디스플레이, OLED(Organic LED) 디스플레이, 터치 스크린, 플렉시블 디스플레이 등이 될 수 있다. 터치 스크린의 경우, 입력 수단으로도 이용될 수 있다.The display unit 130 performs a function of outputting requirements information for the requirements model corresponding to the mismatch element under the control of the calculation unit 120. Of course, it is possible to provide the user with a screen for inputting input information, a guidance screen for guiding input, an execution screen for execution, etc. The display unit 130 may be a liquid crystal display (LCD), a light emitting diode (LED) display, an organic LED (OLED) display, a touch screen, or a flexible display. In the case of a touch screen, it can also be used as an input means.

저장부(140)는 요구사항 모델, 코드 정보 등을 저장하는 기능을 수행한다. 물론, 요구사항 모델을 통합하는 알고리즘을 구현하는 프로그램, 소프트웨어, 데이터 등을 포함한다. 따라서, 저장부(140)는 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD(Secure Digital) 또는 XD(eXtreme Digital) 메모리 등), 램(Random Access Memory, RAM), SRAM(Static Random Access Memory), 롬(Read Only Memory, ROM), EEPROM(Electrically Erasable Programmable Read Only Memory), PROM(Programmable Read Only Memory), 자기 메모리, 자기 디스크, 광디스크 등을 포함할 수 있다. 또한, 인터넷(internet)상에서 저장 기능을 수행하는 웹 스토리지(web storage), 클라우드 서버와 관련되어 동작할 수도 있다.The storage unit 140 performs the function of storing requirements models, code information, etc. Of course, it includes programs, software, data, etc. that implement algorithms that integrate the requirements model. Accordingly, the storage unit 140 may be a flash memory type, a hard disk type, a multimedia card micro type, or a card type memory (e.g., Secure Digital (SD)). or eXtreme Digital (XD) memory, etc.), Random Access Memory (RAM), Static Random Access Memory (SRAM), Read Only Memory (ROM), Electrically Erasable Programmable Read Only Memory (EEPROM), Programmable Read Only Memory), magnetic memory, magnetic disk, optical disk, etc. Additionally, it may operate in connection with web storage and cloud servers that perform storage functions on the Internet.

도 2는 도 1에 도시된 연산부(120)의 세부 구성 블럭도이다. 도 2를 참조하면, 연산부(120)는, 모델 구조 정의 모듈(210), 구성 모듈(220), 구조 통합 모듈(230), 불일치 요소 식별 모듈(240), 코드 생성 모듈(250) 등을 포함하여 구성될 수 있다. FIG. 2 is a detailed block diagram of the calculation unit 120 shown in FIG. 1. Referring to FIG. 2, the calculation unit 120 includes a model structure definition module 210, a configuration module 220, a structure integration module 230, an inconsistent element identification module 240, a code generation module 250, etc. It can be configured as follows.

모델 구조 정의 모듈(210)은 입력부(110)로부터 하나의 요구사항 모델의 구조 정의를 위한 입력 정보를 전달받아 요구사항 모델의 구조를 정의하는 기능을 수행한다. 부연하면, 각 구성요소의 위치 설정, 각 구성요소의 이름 설정, 각 구성요소의 논리 연산자 설정, 각 구성요소의 데이터 설정 등을 들 수 있다.The model structure definition module 210 receives input information for defining the structure of a requirements model from the input unit 110 and performs the function of defining the structure of the requirements model. To elaborate, this includes setting the location of each component, setting the name of each component, setting the logical operator of each component, and setting the data of each component.

구성 모듈(220)은 하나의 요구사항 모델의 내용 구성을 수행하는 역할이다. 부연하면, 내용은 단일문장 이나 조각코드가 해당될 수 있다. 조각코드는 사용자가 재사용하려고 미리 설정하는 코드 모음을 의미한다.The configuration module 220 is responsible for configuring the contents of one requirements model. To elaborate, the content may be a single sentence or piece of code. A piece of code refers to a collection of code that a user sets up in advance to reuse.

구조 통합 모듈(230)은 요구사항 모델간 통합하는 기능을 수행한다. 부연하면, 통합은 구성요소의 이름과 위치를 이용하여 수행되고, 동일한 이름의 구성요소에 대해서는 구성요소의 모든 멤버들 간의 통합이 수행된다.The structural integration module 230 performs the function of integrating between requirements models. In other words, integration is performed using the name and location of the component, and integration between all members of the component is performed for components with the same name.

불일치 요소 식별 모듈(240)은 요구사항 모델간 불일치 요소가 있는지를 식별하는 기능을 수행한다. 부연하면, 불일치 요소 식별은 개별 구성요소에 대한 문법적 오류 식별, 하나의 요구사항 모델에 대한 구성요소 간의 불일치 식별, 요구사항 모델 간의 불일치 식별로 구분되어 수행된다.The inconsistency element identification module 240 performs a function of identifying whether there are inconsistency elements between requirements models. In detail, the identification of inconsistent elements is carried out by identifying grammatical errors for individual components, identifying inconsistencies between components for one requirements model, and identifying inconsistencies between requirements models.

코드 생성 모듈(250)은 통합 요구사항 모델에 대한 코드 정보를 생성하는 기능을 수행한다.The code generation module 250 performs the function of generating code information for the integrated requirements model.

도면 기재된 "??모듈" 의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 소프트웨어 및/또는 하드웨어로 구현될 수 있다. 하드웨어 구현에 있어, 상술한 기능을 수행하기 위해 디자인된 ASIC(application specific integrated circuit), DSP(digital signal processing), PLD(programmable logic device), FPGA(field programmable gate array), 프로세서, 마이크로프로세서, 다른 전자 유닛 또는 이들의 조합으로 구현될 수 있다. 소프트웨어 구현에 있어, 소프트웨어 구성 컴포넌트(요소), 객체 지향 소프트웨어 구성 컴포넌트, 클래스 구성 컴포넌트 및 작업 구성 컴포넌트, 프로세스, 기능, 속성, 절차, 서브 루틴, 프로그램 코드의 세그먼트, 드라이버, 펌웨어, 마이크로 코드 , 데이터, 데이터베이스, 데이터 구조, 테이블, 배열 및 변수 등을 포함할 수 있다. 소프트웨어, 데이터 등은 저장장치에 저장될 수 있고, 프로세서에 의해 실행된다. 저장장치나 프로세서는 당업자에게 잘 알려진 다양한 수단을 채용할 수 있다.The term “??module” described in the drawings refers to a unit that processes at least one function or operation, and may be implemented in software and/or hardware. In hardware implementation, an application specific integrated circuit (ASIC), digital signal processing (DSP), programmable logic device (PLD), field programmable gate array (FPGA), processor, microprocessor, and other devices designed to perform the above-described functions. It may be implemented as an electronic unit or a combination thereof. In software implementation, software composition components (elements), object-oriented software composition components, class composition components and task composition components, processes, functions, properties, procedures, subroutines, segments of program code, drivers, firmware, microcode, and data. , databases, data structures, tables, arrays, and variables. Software, data, etc. can be stored on a storage device and executed by a processor. The storage device or processor may employ various means well known to those skilled in the art.

도 3은 본 발명의 일실시예에 따른 요구사항 모델을 통한 프로그래밍 개념도이다. 도 3을 참조하면, 프로그래밍 개념도의 경우, 사용자 기능(310)과 프로그래밍 기계 기능(320)으로 구분될 수 있다.Figure 3 is a conceptual diagram of programming through a requirements model according to an embodiment of the present invention. Referring to FIG. 3, the programming concept diagram may be divided into a user function 310 and a programming machine function 320.

도 3을 설명하기에 앞서, 우선 자동 프로그래밍 개념을 설명하기로 한다. Before explaining FIG. 3, the concept of automatic programming will first be explained.

프로그래밍을 자동으로 수행하는 것을 개념화하기 위해서는 어디서부터 어디까지가 사용자가 제공해야 하는 요구사항이고, 어느 부분이 기계가 수행해야 하는 프로그래밍인지 구분하여야 한다. 이를 위해서는 일반적인 프로그램(Imperative program)이 갖는 특성에 대해서 먼저 살펴보아야 한다. 여기서는 예시적으로 C code에 대해서 설명하지만, 다른 형태의 프로그래밍 언어도 코드의 구조와 내용으로 구성됨에 있어서는 동일한 특성을 갖는다.In order to conceptualize the automatic performance of programming, it is necessary to distinguish which part is the requirements that must be provided by the user and which part is the programming that must be performed by the machine. To do this, we must first look at the characteristics of a general program (imperative program). Here, C code is explained as an example, but other types of programming languages have the same characteristics in terms of code structure and content.

임의의 C code에서 논리 연산자가 포함된 문장을 제외한 모든 문장의 앞뒤에 중괄호를 넣는 것은 코드의 의미에 아무런 변화를 주지 않는다. 이 중괄호는 문장과 문장의 관계와 데이터의 사용 범위를 명확하게 구분해 준다. 코드는 실제로 이런 관계 표현에 기반해서 실행되지만, 텍스트 기반의 프로그래밍에서 프로그래머들의 사용 편의를 위해서 이러한 논리 구성이 생략되어 사용되고 있다. 또한, 이는 코드의 구조를 알고리즘화하기 위한 수학식 모델을 도입하는 방법일 뿐, 기존의 코드 의미에는 아무런 영향이 없다. 여기서 주의해야 할 것은 변수를 선언하면서 값을 할당하는 문장은 변수의 선언 문장과 값의 할당 문장으로 나누어야 한다는 것이다. 텍스트 기반의 프로그래밍에서는 사용자의 편의를 위해서 이러한 기능을 제공하지만, 코드의 구조와 내용을 구분하여 자동화하는 개념에서는 이러한 편의 기능이 프로그래밍의 알고리즘화를 저해하는 요소이다. 자동 프로그래밍을 통해서 구성되는 코드의 결과물은 코딩상의 특정한 편의 기능을 사용하지 않는다고 해서 표현의 범위에 제한이 되는 것은 아니므로, 이러한 가정은 일반화될 수 있다. In any C code, putting braces before and after all statements except those containing logical operators does not change the meaning of the code. These curly brackets clearly distinguish the relationship between sentences and the scope of data use. Code is actually executed based on these relationship expressions, but in text-based programming, this logical structure is omitted for the convenience of programmers. Additionally, this is only a method of introducing a mathematical model to algorithmize the structure of the code, and has no effect on the meaning of the existing code. What you need to be careful about here is that the statement that declares a variable and assigns a value should be divided into a variable declaration statement and a value assignment statement. In text-based programming, these functions are provided for the user's convenience, but in the concept of distinguishing and automating the structure and content of the code, these convenience functions are a factor that hinders the algorithmicization of programming. This assumption can be generalized because the result of a code constructed through automatic programming is not limited in the range of expression just because it does not use a specific convenience function in coding.

상기와 같이 기존의 코드에 중괄호가 추가되면, 중괄호로 표현된 블록은 순차, 선택, 반복 논리로 구성되고, 논리 연산자와 결합된 명제로 표현된다. 예를 들면 아래와 같다.When braces are added to existing code as above, the block expressed in braces consists of sequential, selection, and repetition logic and is expressed as a proposition combined with a logical operator. For example:

while (x==1) { }while (x==1) { }

여기서, while은 논리 연산자이고, "x==1"은 명제 { }는 블록이다. C code에서 상기의 논리를 표현하는 연산자는 여러 개가 있지만, 수학적인 논리의 구성을 위해서는 대표적인 논리 연산자 하나씩만 사용한다. 이렇게 하여도 코드의 구조를 표현하는데 지장이 없고, 또 수학적인 표현에서는 중복된 표현은 지양되어야 하기 때문이기도 하다. Here, while is a logical operator, "x==1" is a proposition, and { } is a block. There are several operators that express the above logic in C code, but only one representative logical operator is used to construct mathematical logic. This is because there is no problem in expressing the structure of the code, and redundant expressions should be avoided in mathematical expressions.

때문에 본 발명의 일실시예에서는 반복, 선택, 순차의 논리 연산자로 While, If, None을 사용한다. 여기서, "None"은 중괄호 앞에 연산자가 없음을 의미한다. 이렇게 C code 를 구성하는 것은 모든 코드가 구조와 내용으로 구분되어 있다는 것을 설명하기 위해서다. 아래에 정의된 논리 연산자 블록 이외의 모든 코드는 내용으로 구분되고, 아래의 논리 연산자는 구조로 명명한다.Therefore, in one embodiment of the present invention, While, If, and None are used as logical operators for repetition, selection, and sequence. Here, "None" means that there is no operator before the braces. The reason C code is structured like this is to explain that all code is divided into structure and content. All code other than the logical operator block defined below is divided by content, and the logical operators below are named by structure.

while (명제) { }while (proposition) { }

if (명제) { } if (proposition) { }

{ } { }

상기에서 설명한 중괄호가 추가된 일반적인 코드에서 내용은 최하단에 구성된 중괄호 안에 존재한다. 상기의 코드에서 모든 단일문장의 앞뒤에 위치한 중괄호 안에는 단일문장이 있고, 그 문장의 내부에는 더 이상 중괄호가 없으므로, 해당 단일문장은 최하단의 중괄호 내에 있는 것이다. 즉, 코드는 논리의 구조와 최하단의 내용으로 구분되는 것이다. 이것은 일반적인 프로그램(Imperative Code)는 구조를 통해 단일문장들이 관계화되어 구현하고자 하는 것이 프로그래밍된 것임을 의미한다. 이것은 모든 일반적인 프로그램(Imperative program)에서 공통적으로 적용되는 특성이다. 그러므로 프로그래밍을 한다는 것은 논리의 구성을 앞서 설명한 구조로 구조화하고, 최하단에 적절한 내용(단일문장 또는 조각 코드)(313)으로 채우는 것을 의미한다. In the general code with the braces added as described above, the content exists within the curly braces at the bottom. In the code above, there is a single statement within the curly braces located before and after every single statement, and since there are no more curly braces inside the statement, the single statement is within the curly bracket at the bottom. In other words, the code is divided into logical structure and bottom-level content. This means that a general program (Imperative Code) is programmed to implement what is intended to be implemented by relating single sentences through a structure. This is a characteristic commonly applied to all general programs (imperative programs). Therefore, programming means structuring the logic in the structure described above and filling the bottom with appropriate content (single sentence or piece of code) (313).

보다 구체적으로 도 5와 도7, 도8을 이용해서 설명하면 다음과 같다. 사용자는 프로그래밍을 할 때, 거시적인 기능 간의 관계를 먼저 구상하고, 이를 구체화하게 된다. 도 7은 Seamark 프로그램을 구성할 때 두 가지 모드(Repair Mode, Normal Mode)를 고려한 것이다. 이때 사용자는 두 모드 간의 관계를 형상화하고 두 모드가 실행되기 위한 조건을 고려할 수 있다. 물론 이때 사용되어야 하는 데이터도 구성할 수 있다. In more detail, it will be explained using Figures 5, 7, and 8 as follows. When programming, users first envision relationships between macro functions and then specify them. Figure 7 shows two modes (Repair Mode and Normal Mode) taken into consideration when configuring the Seamark program. At this time, the user can shape the relationship between the two modes and consider the conditions for the two modes to be executed. Of course, the data that should be used at this time can also be configured.

하지만, 각 모드 내에서 수행되어야 할 구체적인 내용에 대해서는 생각할 필요가 없다. 아직은 그것을 고려할 단계가 아닌 것이다. 도 8은 Normal Mode에서 기능의 구성을 조금 더 구체화한 형태이다. Normal Mode 하부에 네가지 모드가 더 존재할 수 있다. 이때는 상기의 두가지 모드(Repair Mode, Normal Mode)에 대해서는 고려할 필요가 없다. 상기의 Normal Mode 하부의 네 가지 모드 간의 관계만 고려하면 된다. 이때 고려해야 할 사항은 각 구성요소의 위치, 이름, 논리연산자, 논리연산자와 결합되는 명제, 데이터의 사용 등이 될 것이다. However, there is no need to think about the specifics that need to be performed within each mode. It's not yet the stage to consider that. Figure 8 shows the configuration of functions in Normal Mode in a more specific form. Four more modes may exist under Normal Mode. At this time, there is no need to consider the above two modes (Repair Mode, Normal Mode). You only need to consider the relationship between the four modes below the Normal Mode above. Matters to be considered at this time include the location, name, logical operator, proposition combined with the logical operator, use of data, etc. of each component.

위치, 이름, 논리 연산자, 논리 연산자와 결합된 명제는 구성요소간의 관계를 형상화하는데 사용된다. Seamark 프로그램이 어떻게 구성되어야 할지를 고려하는 것이다. 이후에 이 구성요소들이 정의된 기능을 수행하기 위해서 필요한 데이터를 구성한다. 이를 통해 프로그래밍의 기본 구성요소인 제어구조과 데이터의 사용을 완성할 수 있다. 이와 같은 방법으로 사용자는 순차적으로 요구사항 모델의 구조를 하나씩 구성해 갈 수 있다.Positions, names, logical operators, and propositions combined with logical operators are used to form relationships between components. The idea is to consider how the Seamark program should be structured. Afterwards, these components configure the data necessary to perform the defined functions. Through this, you can complete the use of control structures and data, which are the basic components of programming. In this way, users can sequentially construct the structure of the requirements model one by one.

그리고 이러한 요구사항 모델들은 동일한 구성요소인 Normal Mode를 중심으로 통합이 가능하다. 이는 코드를 통합하는 통상적인 방법과 동일하다. 당연하게도 Repair Mode와 Normal Mode는 Seamark 구성요소 하부에 위치하고, Normal Mode 하부에는 상기의 네 가지 모드가 순차적으로 구성된다. 이러한 관계를 알고리즘화하기 위해서 상기에 구성요소 간의 상위, 차상위, 차하위, 순차 관계를 설명한 것이다. 상기의 두 요구사항 모델이 통합되어 각 요구사항 모델 관점에서의 구성요소 간의 관계는 도 5에서 보는 바와 같이 코드가 통합된 형태로 표현될 수 있다. 사용자는 점진적으로 요구사항 모델들을 각 기능 관점에서 구성할 수 있고, 프로그래밍 기계는 이러한 요구사항 모델들을 자동으로 통합하는 것이다. And these requirements models can be integrated around the same component, Normal Mode. This is the same as the normal way to integrate code. Naturally, Repair Mode and Normal Mode are located at the bottom of the Seamark component, and the above four modes are configured sequentially under Normal Mode. In order to algorithmize this relationship, the upper, lower, lower, and sequential relationships between components are explained above. By integrating the two requirements models above, the relationship between components from the perspective of each requirements model can be expressed in an integrated form of code, as shown in FIG. 5. Users can gradually construct requirements models in terms of each function, and the programming machine automatically integrates these requirements models.

이렇게 각 요구사항 모델의 구성요소를 구성하다 보면, 그 이하에 더 이상 의미가 쪼개질 수 없는 또는 그 의미를 더 이상 쪼갤 필요가 없는 구성요소가 존재한다. 그 하부에는 재사용하는 조각코드나 단일문장을 위치시킬 수 있다. 이로써 모든 요구사항 모델의 구성요소들의 멤버가 정의된다. 이것이 요구사항 모델 구성하는 방법이고 이러한 요구사항 모델 구성이 완성되면 프로그래밍 기계는 모든 요구사항 모델을 통합하고 검증하여 코드를 자동으로 생성하게 된다.When constructing the components of each requirements model in this way, there are components whose meaning cannot be split any further or whose meaning does not need to be split any further. At the bottom, you can place reused fragments of code or single sentences. This defines the members of all requirements model components. This is how to construct a requirements model, and once this requirements model composition is completed, the programming machine integrates and verifies all requirements models and automatically generates code.

요구사항 모델은 구조 정의(311)와 내용 구성(312)순으로 논리화된다. 구조 정의(311)는 각 요구사항 모델에 대한 구조 정의(311-1 내지 311-n)로 구성된다. 구조 정의(311-1 내지 311-n)는 각 구성요소의 위치 설정, 각 구성요소의 이름 설정, 각 구성요소의 논리 연산자 설정, 및 각 구성요소의 데이터 설정을 포함하여 구성될 수 있다.The requirements model is logicalized in the order of structure definition (311) and content composition (312). The structure definition 311 consists of structure definitions 311-1 to 311-n for each requirements model. The structure definitions 311-1 to 311-n may include location settings for each component, name settings for each component, logical operator settings for each component, and data settings for each component.

본 발명의 일실시예에서 요구사항 모델은 다음과 같은 특성을 갖는다.In one embodiment of the present invention, the requirements model has the following characteristics.

1) 이름으로 식별되는 각 구성요소를 논리연산자와 계층적 순차적 위치관계를 이용하여 하나의 단편적인 요구사항 모델을 구성한다.1) Construct a fragmented requirements model for each component identified by name using logical operators and hierarchical sequential positional relationships.

2) 하나의 요구사항 모델의 최하단에는 내용을 구성할 수 있다.2) Content can be configured at the bottom of a requirements model.

3) 요구사항 모델을 구성하는 구조와 내용은 수학적으로 표현되고, 코드와 대응된다.3) The structure and contents that make up the requirements model are expressed mathematically and correspond to codes.

내용 구성(312)도 각 요구사항 모델에 맞게 각 요구사항 모델에 대한 각각의 내용 구성(312-1 내지 312-n)으로 이루어진다. 각각의 내용 구성(312-1 내지 312-n)은 하나의 구성요소에 하나의 내용(313)으로 이루어진다. 내용(313)은 단일 문장 또는 조각코드로 이루어진다.The content composition 312 is also composed of each content composition (312-1 to 312-n) for each requirements model to suit each requirements model. Each content configuration (312-1 to 312-n) consists of one content (313) for one component. Content 313 consists of a single sentence or fragment code.

사용자가 요구사항 모델의 구조 정의(311)와 내용 구성(312) 순으로 논리화하면, 연산부(120)는 요구사항 모델의 구조 통합(321)을 수행한다. When the user logically defines the structure of the requirements model (311) and configures the content (312), the calculation unit 120 performs structural integration of the requirements model (321).

구조를 통합하는 과정에서, 연산부(120)는 프로그래밍 기계를 이용하여 요구사항 모델 간의 불일치 구성요소 식별(322)을 수행한다. 부연하면, 불일치 구성요소 식별(322)이 발생하면, 연산부(120)는 이를 전시부(130)에 디스플레이하여, 사용자에게 현재 식별된 불일치 구성요소가 있음을 안내 정보로 알려준다. 여기서, 프로그래밍 기계는 모든 요구사항 모델의 의미가 유지되도록 요구사항 모델을 통합하는 알고리즘을 갖는 소프트웨어이다.In the process of integrating the structure, the operation unit 120 uses a programming machine to identify inconsistent components between the requirements models (322). To elaborate, when mismatched component identification 322 occurs, the calculation unit 120 displays this on the display unit 130 to inform the user that there is a currently identified mismatched component through guidance information. Here, the programming machine is software with an algorithm that integrates the requirements models so that the meaning of all requirements models is maintained.

또한, 프로그래밍 기계는 요구사항 모델 간의 불일치 구성요소를 식별할 수 있다. 또한, 프로그래밍 기계는 요구사항 모델의 구조 및 내용의 문법적 오류를 검증할 수 있다.Additionally, the programming machine can identify mismatched components between requirements models. Additionally, the programming machine can verify grammatical errors in the structure and content of the requirements model.

또한, 프로그래밍 기계는 통합된 요구사항 모델을 코드에 대응시킬 수 있다.Additionally, the programming machine can map the integrated requirements model to code.

도 3을 계속 참조하면, 사용자는 해당 구성요소를 수정함으로써 해당 요구사항 모델을 수정한다. 이러한 과정을 반복하여 사용자가 더 이상 요구사항 모델을 구성하지 않고, 프로그래밍 기계가 불일치 요소를 식별하지않는다면, 사용자는 프로그래밍 기계로부터 현재 구성된 요구사항 모델들을 통합하는 통합 모델과 이에 상응하는 코드 정보(330)를 얻게 된다.Continuing to refer to Figure 3, the user modifies the corresponding requirements model by modifying the corresponding components. By repeating this process, if the user no longer configures the requirements model and the programming machine does not identify inconsistent elements, the user receives an integrated model that integrates the currently configured requirements models from the programming machine and corresponding code information (330 ) is obtained.

요구사항 모델의 구성방법을 통한 프로그램 완성을 설명하면 다음과 같다.Program completion through the construction method of the requirements model is explained as follows.

요구사항 모델을 구성하고 통합, 검증하는 과정은 요구사항 모델을 거시적으로 스케치하는 것에서부터 상세하게 구성을 완성할 때까지 반복해서 수행된다. 이는 일반적인 프로그램을 구성하는 방법과 같다. 다만 본 발명의 일실시예에서는 사용자가 단편적인 논리를 기반으로 요구사항 모델을 구성하면, 통합, 검증, 코드의 생성을 프로그래밍 기계가 수행한다는 점에서 구분된다. The process of configuring, integrating, and verifying the requirements model is performed repeatedly from sketching the requirements model at a macro level to completing the detailed configuration. This is the same way as configuring a general program. However, in one embodiment of the present invention, the user constructs a requirements model based on fragmentary logic, and a programming machine performs integration, verification, and code generation.

이렇게 사용자가 요구사항 모델을 자동 프로그래밍 기계와 반복 수행하여 코드의 구조를 완성하면, 남은 작업은 최하단의 구성요소에 내용을 삽입하는 것이다. 내용은 요구사항 모델의 멤버에 포함된다. 내용의 구성에 의해서 사용자가 원하는 요구사항 모델의 목적이 변경될 수도 있기 때문에 내용은 사용자가 제공하는 요구사항에 해당되는 것이다. 내용을 수학적으로 구성하는 방법은 요구사항 모델의 수학식 모델의 추가적인 멤버로 구성하는 것이다(요구사항 모델의 수학식 모델은 이후에 정의된다). 수학식 모델은 집합으로 구성되므로 구성요소의 마지막 멤버로 내용의 추가가 가능하다. 내용은 아래의 예시와 같이 단일문장의 종류와 다양한 코드 표현 또는 데이터 값으로 구성할 수 있다. 예를 들면,Once the user completes the code structure by repeatedly executing the requirements model with an automatic programming machine, the remaining task is to insert content into the bottom component. Content is included in the members of the requirements model. Since the purpose of the requirements model desired by the user may change depending on the composition of the content, the content corresponds to the requirements provided by the user. The way to construct the content mathematically is to construct it as an additional member of the mathematical model of the requirements model (the mathematical model of the requirements model is defined later). Since the mathematical model is composed of a set, content can be added as the last member of the component. The content can be composed of single sentence types and various code expressions or data values, as shown in the example below. For example,

printf("Hello world! ")printf("Hello world! ")

상기의 단일문장은 아래와 같이 수학적으로 표현이 가능하다.The above single sentence can be expressed mathematically as follows.

(kind of statement, String)(kind of statement, String)

여기서 kind of statement ∈ K = { x | x 는 C code 의 문장 종류}, String = { x | x 는 단어의 조합 }where kind of statement ∈ K = { x | x is a type of statement in C code}, String = { x | x is a combination of words }

상기와 같은 방법으로 모든 단일문장은 각각 종류별로 수학적으로 표현하는 것이 가능하다. 예를 들어, 데이터의 할당은 (data 이름, 값), printf 문에서 변수에 의한 값의 삽입은 (data 이름, 값이 표현되어야 하는 위치) 등 이다.In the same way as above, it is possible to mathematically express each single sentence by type. For example, assignment of data is (data name, value), insertion of a value by a variable in a printf statement is (data name, position where the value should be expressed), etc.

이것이 텍스트 기반의 프로그래밍이면 매우 번거로울 수 있지만, 그래픽 기반에서 내용이 추가될 위치에서 종류를 선택하고, 입력할 값을 넣는 것은 그렇게 번거롭지만은 않을 수 있다. 음성을 이용하는 경우에도 마찬가지다. 그리고, 내용이 단일문장이 아닌 재사용하고자 하는 조각코드로 구성되는 경우에는 해당 조각코드에 이름을 명명하여 (조각코드 형식, 이름)을 멤버로 구성하면, 수학적으로 표현할 수 있다. 요구사항 모델의 통합을 통한 코드를 생성할 때도 해당 이름의 위치에 조각 코드를 삽입하면 된다.This can be very cumbersome if it is text-based programming, but in graphic-based programming, selecting the type at the location where the content will be added and entering the input value may not be so cumbersome. The same applies when using voice. In addition, if the content consists of a piece of code to be reused rather than a single sentence, it can be expressed mathematically by naming the piece of code and forming (piece code format, name) as a member. When generating code through integration of the requirements model, simply insert the fragment code at the location of the corresponding name.

이를 통해 본 발명의 일실시예에서 내용에 대한 코드가 수학적으로 표현될 수 있다.Through this, in one embodiment of the present invention, the code for the content can be expressed mathematically.

도 4는 본 발명의 일실시예에 따른 요구사항 모델을 통한 프로그래밍 과정을 보여주는 흐름도이다. 도 4를 참조하면, 먼저 요구사항 모델의 구조를 위해 사용자에 의해 생성되는 명령은 입력부(110)에 입력 정보로 변환되며, 이 입력 정보에 따라 요구사항 모델의 구조 정의 및 내용 구성이 이루어진다(단계 S410,S420).Figure 4 is a flowchart showing a programming process through a requirements model according to an embodiment of the present invention. Referring to FIG. 4, first, the command generated by the user for the structure of the requirements model is converted into input information in the input unit 110, and the structure and content of the requirements model are defined according to this input information (step S410,S420).

이후, 연산부(120)는 요구사항 모델들의 구조를 통합하고, 요구사항 모델간 구성요소를 식별하여 불일치 구성요소가 있는지를 확인한다(단계 S440,S450).Afterwards, the calculation unit 120 integrates the structures of the requirements models and identifies components between the requirements models to determine whether there are mismatched components (steps S440 and S450).

단계 S450에서, 확인결과, 불일치 구성요소가 있으면, 연산부(120)는 불일치 구성요소를 전시부(130)에 안내 정보로 디스플레이한다(단계 S451).In step S450, if there is a mismatched component as a result of the confirmation, the calculation unit 120 displays the mismatched component as guidance information on the display unit 130 (step S451).

안내 정보가 디스플레이됨에 따라, 사용자는 요구사항 모델의 구조를 수정하기 위해 해당 구성요소를 입력부(110)를 통해 수정한다(단계 S453). 이후, 단계 S420 내지 S450이 진행된다.As the guidance information is displayed, the user modifies the corresponding component through the input unit 110 to modify the structure of the requirements model (step S453). Afterwards, steps S420 to S450 proceed.

이와 달리, 단계 S450에서, 확인결과, 불일치 구성요소가 없으면, 연간부(120)는 요구사항 모델들의 구조를 통합하여 코드 정보를 생성한다(단계 S460). 즉, 자동 프로그래밍이 이루어진다.On the other hand, in step S450, if there are no mismatched components as a result of confirmation, the annual unit 120 integrates the structures of the requirements models to generate code information (step S460). In other words, automatic programming takes place.

도 5는 본 발명의 일실시예에 따른 코드의 예시이다. 특히, 도 5는 C-언어로 작성된 코드의 예시이며, 도 5는 "Seamark"라는 프로그램의 다양한 모드를 나타낸다. 도 5를 참조하면, 각 모드 간(Repair Mode, Normal Mode, Tactical Mode, Part Training Mode, All Training Mode, Replay Mode 등)의 관계는 구조에 의해서 논리적으로 구조화되어 있다. 모드에서 수행되어야 할 내용은 단일문장 또는 조각 코드로 구성될 수 있고 최하단의 중괄호에 위치한다. 물론, 요구사항 모델을 추가 구성하여 각 모드에 대한 구조를 상세화하여 구성할 수도 있다.Figure 5 is an example of code according to an embodiment of the present invention. In particular, Figure 5 is an example of code written in C-language, and Figure 5 shows various modes of a program called "Seamark". Referring to Figure 5, the relationship between each mode (Repair Mode, Normal Mode, Tactical Mode, Part Training Mode, All Training Mode, Replay Mode, etc.) is logically structured by structure. The content to be performed in the mode can consist of a single sentence or piece of code and is located in the curly brackets at the bottom. Of course, the requirements model can be additionally configured to detail the structure for each mode.

여기서 최하단의 중괄호는 중괄호 안에 더 이상 중괄호가 존재하지 않는 중괄호를 의미한다. 만약 요구사항 모델 구조의 중간에, 즉 최하단 구성요소가 아닌 위치에 단일문장이 존재한다면, 앞서 설명한 수학적인 논리 구성을 위한 중괄호가 해당 단일문장 앞뒤에 추가될 수 있다. 이는 그 위치에서 순차논리의 구성요소가 추가 구성되고, 즉 중괄호만으로 구성된 논리가 구성되고, 그 내부에 단일문장이 위치하게 됨을 의미한다. 이 역시 최하단의 위치에 단일문장이 위치하는 것과 동일한 의미가 된다. 그러므로 요구사항 모델의 구조가 아닌 내용(단일문장이나 조각 코드)은 항상 최하단 구성요소에 위치하는 것이 일반화된 프로그래밍의 특성이라 할 수 있다.Here, the bottom brace means a brace that no longer has braces within it. If a single statement exists in the middle of the requirements model structure, that is, at a location other than the bottom component, curly braces for the mathematical logic structure described above can be added before and after the single statement. This means that components of sequential logic are additionally constructed at that location, that is, logic consisting of only braces is constructed, and a single sentence is placed inside it. This also has the same meaning as placing a single sentence at the bottom position. Therefore, it can be said that it is a characteristic of generalized programming that content (single statement or piece of code) that is not the structure of the requirements model is always located in the lowest component.

상기의 구조에 대한 코드인 도 5에 도시된 바와 같이 구조를 표현하기 위해서는 논리 연산자와 함께 명제도 필요하다. 명제는 데이터로 구성되므로, 코드에서 데이터의 사용도 구조의 범주에 포함시켜야 한다. 여기서 데이터의 값은 불필요하다. 논리를 구조화하는 것이므로 데이터의 값을 사용하지는 않기 때문이다. As shown in Figure 5, which is the code for the above structure, propositions as well as logical operators are required to express the structure. Since propositions are made up of data, the use of data in code should also be included in the category of structure. Here, the data value is unnecessary. This is because the logic is structured and data values are not used.

코드를 구조화하는 관점에서, 정확하게는 데이터의 선언 문장은 구조이고, 데이터에 값을 할당하는 것은 내용으로 구분된다. 선언 문장은 char OperatorRole, RNMode, char ActiveMode, SecurityValidity 등이 되고, 여기서, char는 문자열을 나타낸다. 도 5에서 OperatorRole==0, OperatorRole==2, 등은 값의 할당이 아닌 옳고 그름을 판단하는 명제이다.From the perspective of structuring code, the data declaration statement is the structure, and assigning values to the data is classified as the content. The declaration statement is char OperatorRole, RNMode, char ActiveMode, SecurityValidity, etc., where char represents a string. In Figure 5, OperatorRole==0, OperatorRole==2, etc. are propositions that determine right or wrong, not value assignments.

프로그래밍은 수행해야할 목적에 대한 내용을 논리화하여 코드로 표현한 것이다. 즉, 목적은 여러 개의 요구사항 모델로 구성되고, 이 요구사항 모델들을 논리적으로 구조화하여 통합하는 것이 프로그래밍이다. 앞서 설명한 것들을 바탕으로 프로그래밍을 수행한다는 것은 특정한 목적과 관계된 내용들을 앞서 설명한 논리구조로 구조화하고, 더 이상 쪼개질 수 없는 의미를 내용으로 채워 넣는 것이다.Programming is the process of logicalizing the purpose to be performed and expressing it as code. In other words, the purpose consists of several requirements models, and programming is to logically structure and integrate these requirements models. Performing programming based on what was explained above means structuring content related to a specific purpose into the logical structure described above and filling it with meaning that cannot be further divided.

자동 프로그래밍 개념은 요구사항의 정의와 프로그래밍의 정의에서 출발된다. 사용자가 프로그래밍 기계에게 제공해야 하는 요구사항은 어떻게 구성되고 프로그래밍 기계는 자동으로 어떤 역할을 수행해야 하는가가 본 발명의 주요 개념이다.The concept of automatic programming starts from the definition of requirements and programming. The main concept of the present invention is how the requirements that the user must provide to the programming machine are structured and what roles the programming machine should automatically perform.

요구사항이 자연어로 구성되는 것은 매우 모호하므로, 상기에서 사용한 논리인 순차, 선택, 반복의 논리를 이용하여 내용들을 구조화하여 단편적인 요구사항들을 구성한다고 하면, 프로그래밍 기계의 역할은 이 요구사항의 조각들을 올바르게 통합하여 코드를 생산하는 것이고, 이 과정에서 요구사항 모델 간의 불일치와 코드의 문법적인 오류를 검출하는 것이 프로그래밍 기계의 역할이 된다. Since requirements are structured in natural language, it is very ambiguous, so if we structure the contents using the logic of sequential, selection, and repetition, which is the logic used above, to form fragmentary requirements, the role of the programming machine is to create fragments of these requirements. The goal is to produce code by correctly integrating them, and in this process, the role of the programming machine is to detect inconsistencies between requirements models and grammatical errors in the code.

기계가 요구사항의 옳고 그름은 판단할 수는 없다. 그것은 사용자가 정의하는 것이기 때문이다. 다만 사용자가 정의한 요구사항 간의 불일치로 인한 오류는 검출할 수 있다. 하지만 이중 어떤 요구사항이 옳은지도 기계는 판단하지 못한다.A machine cannot judge whether a requirement is right or wrong. This is because it is defined by the user. However, errors resulting from inconsistencies between user-defined requirements can be detected. However, the machine cannot determine which of these requirements is correct.

이것 역시 사용자의 정의에 의해서 판단되기 때문이다. 그러므로 오류를 수정하는 것은 요구사항을 정의하는 것과 같다. 그러므로 본 발명의 일실시예에서 자동으로 프로그래밍을 수행하는 프로그래밍 기계는 요구사항 모델을 통합하고, 통합된 요구사항 모델에 대해서 통합 코드를 생산하고, 통합 코드의 오류와 요구사항 간의 불일치를 검출하는 기능을 수행한다. This is because this is also determined by the user's definition. Therefore, correcting errors is the same as defining requirements. Therefore, in one embodiment of the present invention, a programming machine that automatically performs programming has the function of integrating requirements models, producing integrated code for the integrated requirements model, and detecting errors in the integrated code and inconsistencies between requirements. Perform.

사용자는 요구사항을 구성하고, 요구사항의 문법적 오류 및 요구사항 간의 불일치가 도출되면 이를 수정한다. 즉, 사용자의 역할은 올바른 요구사항을 구성하는 것이다. 그리고 사용자가 정의하는 요구사항은 이후에서 보다 상세하게 정의되는 수학적인 논리로 표현된다.Users compose requirements and correct grammatical errors in the requirements and any inconsistencies between the requirements. In other words, the user's role is to formulate the correct requirements. And the requirements defined by the user are expressed in mathematical logic, which is defined in more detail later.

도 6은 본 발명의 일실시예에 따른 논리 연산자를 생략한 상태의 블록 간의 위치관계를 표현한 예시이다. 도 6을 참조하면, 프로그램의 구조를 논리적으로 알고리즘화하기 위해서는 구조를 구성하는 구성요소 간의 관계가 설정되어야 한다. 이러한 관계를 표현하기 위해서 구성요소 간의 순차 및 계층관계를 중첩 순서쌍(Nested ordered pair)을 사용하여 표현한다. 단, 이 표현에서 괄호는 생략되었다. 왜냐하면 여러 개의 구성요소를 표현하다 보면 괄호의 개수가 너무 많아지게 되어 표현의 가시성이 저하되기 때문이다.Figure 6 is an example of positional relationships between blocks with logical operators omitted according to an embodiment of the present invention. Referring to FIG. 6, in order to logically algorithmize the structure of a program, the relationship between the components constituting the structure must be established. To express this relationship, the sequential and hierarchical relationships between components are expressed using nested ordered pairs. However, the parentheses are omitted in this expression. This is because when expressing multiple components, the number of parentheses increases and the visibility of the expression decreases.

도 6을 참조하면, 좌측은 코드 정보(610)의 예시이고, 우측은 좌측에 표현된 코드 정보(610)의 예시에 해당하는 계층적 순차적 위치관계(620)의 예시이다. 최상위 구성요소(623)은 (1)이고, 최하위 구성요소(621)는 (1,2,2)이고, 최하위 구성요소(621)의 차상위 구성요소(622)은 (1,2)이다. (1)과 (1,2)은 모두 (1,2,2)의 상위 구성요소이다. (1,2,1)은 (1,2,2)보다 순차적으로 앞서고, 차상위 구성요소인 (1,2)는 동일하다. 순차적 위치관계는 동일한 차상위 구성요소 아래에 있다. 그러므로 (1,1,1)과 (1,2,1)은 순차적 위치관계가 아니다.Referring to FIG. 6, the left side is an example of code information 610, and the right side is an example of a hierarchical sequential position relationship 620 corresponding to the example of code information 610 expressed on the left side. The highest element 623 is (1), the lowest element 621 is (1, 2, 2), and the next highest element 622 of the lowest element 621 is (1, 2). Both (1) and (1,2) are higher order components of (1,2,2). (1,2,1) sequentially precedes (1,2,2), and the next highest component (1,2) is the same. Sequential positional relationships are under the same next-level component. Therefore, (1,1,1) and (1,2,1) are not sequential positional relationships.

부연하면, 각 구성요소는 가장 아래 계층의 최하위 구성요소, 상기 구성요소의 인접한 상위에 놓이는 차상위 구성요소, 차상위 구성요소를 포함한 상위에 놓이는 상위 구성요소, 임의의 구성요소의 인접한 하위에 놓이는 차하위 구성요소, 차하위 구성요소를 포함하여 하위에 놓이는 하위 구성요소, 상기 각 구성요소의 가장 상위에 놓이는 최상위 구성요소, 상기 각 구성요소의 가장 하위에 놓이는 최하위 구성요소로, 구성요소 간의 계층적인 관계를 구분한다.In detail, each component is the lowest level component of the lowest layer, the next higher level component placed at the adjacent upper level of the component, the higher level component placed at the upper level including the next higher level component, and the lower level level placed at the adjacent lower level of any component. Components, lower-level components including lower-level components, the highest-level component at the top of each component, and the lowest-level component at the bottom of each component, which is a hierarchical relationship between components. distinguish between

도 7은 본 발명의 일실시예에 따른 구성요소의 이름과 위치관계를 이용하여 각 구성요소에 고유의 이름을 명명한 요구사항 모델의 예시이다. 즉, 요구사항 모델은 이름과 위치관계만으로도 표현이 가능하다. 모든 요구사항 모델은 올바르기만 하다면 단편적으로 구성이 가능하다. 왜냐하면 요구사항 모델을 통합하는 알고리즘이 존재하기 때문이다. 그러므로 사용자는 다양한 관점에서 요구사항 모델을 구성하여 관리할 수 있다. 도 7을 참조하면, "Seamark"(720) 프로그램은 Repair Mode(711)와 Normal Mode(712)로 구성된다. Figure 7 is an example of a requirements model in which each component is given a unique name using the names and positional relationships of the components according to an embodiment of the present invention. In other words, the requirements model can be expressed with only name and location relationship. All requirements models can be constructed piecemeal as long as they are correct. This is because algorithms that integrate requirements models exist. Therefore, users can configure and manage requirements models from various perspectives. Referring to Figure 7, the "Seamark" (720) program consists of Repair Mode (711) and Normal Mode (712).

도 8은 도 7에 도시된 "Normal Mode(712)"의 하위 구성을 구체화하는 요구사항 모델의 예시이다. 즉, 도 7과 함께 요구사항 모델의 정의와 통합 등의 개념을 설명하기 위한 요구사항 모델의 예시이다. 도 8을 참조하면, "Normal Mode(712)"는 "Tactical Mode"(810), "Part Training Mode"(820), "All Training Mode(830)", "Replay Mode(840)"로 구성되어 있다. 코드 상에서 모든 구성요소는 그 고유의 역할이 있다. 때문에 그 역할에 대해서 고유의 이름을 명명할 수 있다. 이렇게 이름을 통해서 코드의 구조를 논리화 하는 것은 해당 영역에 정의되는 행위를 기호화 하는 의미를 갖는다. 즉, 행위에 대한 수학적 기호를 할당하는 것이다. 본 발명에서 프로그램은 계층적 순차적 기호를 구조화 하여 표현된다. 행위에 대한 기호인 이름은 각 요구사항 모델 간의 동일한 구성요소를 구분하게 하는 고유의 식별자로 사용된다. Figure 8 is an example of a requirements model specifying the sub-configuration of "Normal Mode (712)" shown in Figure 7. That is, together with Figure 7, it is an example of a requirements model to explain concepts such as definition and integration of the requirements model. Referring to Figure 8, "Normal Mode (712)" consists of "Tactical Mode" (810), "Part Training Mode" (820), "All Training Mode (830)", and "Replay Mode (840)". there is. Every component in the code has its own role. Therefore, you can give a unique name to that role. In this way, logicalizing the structure of the code through the name has the meaning of symbolizing the actions defined in the corresponding area. In other words, it assigns mathematical symbols to actions. In the present invention, a program is expressed by structuring hierarchical sequential symbols. The name, which is a symbol for behavior, is used as a unique identifier to distinguish the same component between each requirements model.

완성된 프로그램의 관점에서 살펴보면 그 개념이 더욱 명확해 진다. 임의의 완성된 프로그램이 있고, 그 프로그램의 각 블록에 의미있는 이름을 부여한다고 가정하자. 그러면 그 프로그램은 이름으로 구조화된 형상이 된다. 그 프로그램에서 수행되는 특정 기능이 있다고 했을 때, 그 프로그램에서 그 기능은 해당되는 블록의 이름을 조합해서 구성된다고 언급할 수 있다. 다른 표현으로는 그 기능이 어떤 이름의 블록들을 순차적으로 수행하는 것으로 실행된다고 이야기 할 수도 있다. 이것은 그 기능관점에서 하나의 모델 구성이고, 이러한 모델을 본 발명에서는 요구사항 모델로 명명하였다. 이는 특정 관점에서 수행되는 기능이고, 프로그래머가 알고 있는 단편적인 지식인 셈이다. 이러한 단편적인 기능을 통합하고 검증하여 자동으로 코드를 생성하는 것이 본 발명의 주요한 개념이다.When we look at it from the perspective of a completed program, the concept becomes clearer. Suppose we have a random, completed program, and we give each block of the program a meaningful name. The program then becomes a structure structured by name. When there is a specific function performed in the program, it can be said that the function in the program is composed by combining the names of the corresponding blocks. In other words, it can be said that the function is executed by sequentially executing blocks with a certain name. This is a model configuration in terms of its functionality, and this model is named a requirements model in the present invention. This is a function performed from a specific perspective and is a piece of knowledge known by the programmer. The main concept of the present invention is to automatically generate code by integrating and verifying these fragmented functions.

도 7 및 도 8에서 두개의 요구사항 모델이 있는데, 이들은 어떻게 통합될지는 쉽게 유추가 가능하다. 동일한 이름의 구성요소인 "Seamark"(720)와 "Normal Mode(712)"를 중심으로 차상위관계 및 순차관계의 구성요소들을 점진적으로 연결하면 된다. 이것이 위치관계와 이름을 이용하여 모델의 구조를 통합하는 개념이다.There are two requirements models in Figures 7 and 8, and it is easy to infer how they will be integrated. You can gradually connect the components of the next-order relationship and sequential relationship around the components of the same name, “Seamark” (720) and “Normal Mode (712).” This is the concept of integrating the structure of the model using positional relationships and names.

각 구성요소들은 위치관계에 의해서 관계화되었지만, 이 위치에 고유의 이름을 할당하는 것은 의미를 갖는 단편적인 프로그램의 구조를 구성하는 것이다. 이러한 요구사항 구성 방법을 이용하여 자동 프로그래밍을 수행한다는 것이 본 발명의 주요 아이디어 이다. 앞서 설명한 바와 같이 구성요소는 이름과 위치, 논리연산자, 명제, 그리고 데이터의 선언 및 사용으로 구성된다. 또한, 구성요소는 수학적으로 표현될 수 있다. 즉, 수학식으로 표현될 수 있다. 이를 예시하면 다음과 같다.Each component is related by positional relationship, but assigning a unique name to this position constitutes the structure of a fragmentary program with meaning. The main idea of the present invention is to perform automatic programming using this requirements configuration method. As explained earlier, components consist of names, locations, logical operators, propositions, and declaration and use of data. Additionally, components can be expressed mathematically. In other words, it can be expressed as a mathematical equation. An example of this is as follows:

- (정의) 요구사항 모델- (Definition) Requirements Model

M = {e | e = (name, (pn-1, ank), t, c, Dc, Dd, Da)}M = {e | e = (name, (p n-1 , a nk ), t, c, D c , D d , D a )}

여기서. here.

Figure pat00003
name ∈ S, S = {x | x is natural words}, {name} ≠ Ф
Figure pat00003
name ∈ S, S = {x | x is natural words}, {name} ≠ Ф

pn = (pn-1, ank), p1 = (1), p2 = (p1 , a2k), ank = an(k-1) + 1, an1 = 1, n ∈ N, k ∈ N, N = {x | x 는 자연수} p n = (p n-1 , a nk ), p1 = (1), p 2 = (p 1 , a 2k ), a nk = a n(k-1) + 1, a n1 = 1, n ∈ N, k ∈ N, N = {x | x is a natural number}

t ∈ Type, Type = {sequence, selection, loop}, {t} ≠ Ф t ∈ Type, Type = {sequence, selection, loop}, {t} ≠ Ф

c 는 C-언어 code의 조건문 c is a conditional statement in C-language code

Dc = {x | x = (namec : typec), x is a used variable in c} D c = {x | x = (name c : type c ), x is a used variable in c }

Dd = {x | x = (named : typed)} D d = {x | x = (name d : type d )}

Da = {x | x = (namea : typea)} D a = {x | x = (name a : type a )}

위 수학식 모델에 따르면, 앞서 설명한 요구사항 모델(M)은 구성요소(e)로 구성되는 집합으로 표현될 수 있음을 의미한다. 각 구성요소에는 고유의 명칭인 이름(name)이 있고, 구성요소 간의 관계를 나타내는 위치(즉 위치 관계)와, while, if, none 등과 같은 논리 연산자의 종류(t)와 명제(c)도 포함된다. According to the above mathematical model, it means that the requirements model (M) described above can be expressed as a set composed of components (e). Each component has a unique name, a position that indicates the relationship between components (i.e., positional relationship), and a type (t) and proposition (c) of logical operators such as while, if, none, etc. do.

구성요소에서 사용되는 데이터도 표현되는데, 해당 구성요소에서 시작되는 데이터를 의미하는 선언 데이터 집합(Dd)이 있고, 상위 구성요소에서 선언(출발)되었지만 현재 구성요소에서 사용하는 접근 데이터 집합(Da), 차상위 구성요소에서 사용되는 데이터 중 현재 구성요소의 명제에서 사용되는 조건 데이터 집합(Dc)이 있다. 구성요소에서 위치와 이름으로 요구사항 모델의 구조를 형상화하고, 각 구성요소 간의 논리 관계 표현을 위한 논리 연산자의 종류 및 명제가 있고, 구성요소 간의 데이터 사용을 표현하기 위한 선언/접근/조건 데이터가 있다고 보면 된다. 이렇게 구성요소를 구성하고 있는 요소를 멤버로 정의한다.Data used by a component is also represented: there is a declaration data set (D d ), which refers to data originating from that component, and an access data set (D a ), among the data used in the next-level component, there is a conditional data set (D c ) used in the proposition of the current component. The structure of the requirements model is represented by the location and name of the components, there are types and propositions of logical operators to express logical relationships between each component, and declaration/access/condition data to express data use between components. You can assume that there is. In this way, the elements that make up the component are defined as members.

수학식 모델은 요구사항 모델의 자동 통합 및 검증을 위해서 도입되었다. 코드를 구성하는 구조와 내용 중, 상기의 수학식 모델은 구조만을 표현하고 있다. 앞서 설명한 바와 같이 단일문장과 조각코드의 수학적인 표현은 상기 수학식 모델 집합의 가장 오른쪽 멤버로 추가가 가능하다. 그러므로 모든 요구사항 모델 즉, 구조와 내용은 수학적으로 표현이 가능한 것이다.Mathematical models were introduced for automatic integration and verification of requirements models. Among the structure and contents that make up the code, the above mathematical model expresses only the structure. As explained previously, mathematical expressions of single sentences and fragment codes can be added as the rightmost member of the mathematical model set. Therefore, all requirements models, that is, structure and content, can be expressed mathematically.

한편, 구성요소의 멤버와 코드와의 대응 관계를 보면 다음표와 같다.Meanwhile, the correspondence between component members and code is as shown in the table below.

구성요소의 멤버member of the component 대응되는 C 언어 코드Corresponding C language code pp 중괄호의 위치Location of braces namename 없음(주석)None (comment) t
Sequence/ Selection/ Loop
t
Sequence/Selection/Loop
아래의 논리 연산자
None/ If/ While
Logical operators below
None/If/While
cc 명제proposition Dc D c 없음doesn't exist Dd D d 선언 데이터 문장들 ex) char name;Declaration data sentences ex) char name; Da D a 없음doesn't exist

표 1 은 상기에서 정의한 수학식 모델과 그와 대응되는 C code 를 목록화한 것이다. 코드의 구조로 표현되는 요구사항 모델이 C code 의 어느 부분과 대응되는지 기술한 것이다. 이는 요구사항 모델이 구성되면, 자동으로 그에 상응하는 코드가 구성될 수 있음을 의미한다. 물론 이를 위해서는 룩업테이블이 구성될 수 있다.Table 1 lists the mathematical models defined above and the corresponding C code. It describes which part of C code the requirements model expressed in the code structure corresponds to. This means that once the requirements model is constructed, the corresponding code can be automatically constructed. Of course, a lookup table can be constructed for this purpose.

예를들어 도 7 및 도 8과 같은 요구사항 모델이 존재한다면, 각 위치에 중괄호를 위치시키고, 중괄호 상단에 도 5와 같이 주석으로 이름을 기술하고, 중괄호 앞에 논리 연산자를 위치하고, 그 다음에 괄호와 함께 명제를 기술한다. 그리고 중괄호의 내부에 선언 데이터 집합의 구성요소들을 선언하는 문장들로 기술하면 된다. 이것이 요구사항 모델의 구조를 자동으로 코딩하는 방법이다. 여기에 최하단 구성요소에 단일문장이나 조각코드가 내용으로 있다면, 해당 위치에 해당 내용을 삽입하면 코드가 완성된다.For example, if there is a requirements model like Figures 7 and 8, place braces at each position, describe the name as a comment at the top of the braces as shown in Figure 5, place a logical operator before the braces, and then place the parenthesis Describe the proposition with . And inside the braces, you can write statements declaring the components of the declaration data set. This is a way to automatically code the structure of the requirements model. If there is a single sentence or piece of code as content in the bottom component, inserting the content at that location completes the code.

한편, 요구사항 모델간 통합을 자세히 기술하면 다음과 같다.Meanwhile, the integration between requirements models is described in detail as follows.

모든 논리적인 사고 방법이 동일하겠지만, 요구사항 모델에서 상호간의 통합은 공통된 인자를 중심으로 통합된다. 도 7 및 도 8에서 2 개의 요구사항 모델이 존재한다. 공통된 구성요소는 "Seamark"와 "Normal Mode" 이다. 그러므로 공통된 인자를 중심으로 통합이 가능하다. 구체적으로 모델을 통합하는 방법은, 각 요구사항 모델의 형상이 위상학적으로 동일하도록 유지시키는 것이다. 이는 통상적으로 코드를 통합하는 방법과 같은 개념인데, 통합된 요구사항 모델을 구성하는 구성요소 간의 관계가, 통합되기 전 상기의 두 요구사항에 대해서 관계가 동일하게 유지되면 통합된 요구사항은 각 요구사항의 의미를 올바르게 반영시킬 수 있다는 것이다. 이를 수학식 모델을 기준으로 설명하면 다음과 같다. 도 7과 도 8에서 Seamark 구성요소와 Normal Mode 구성요소는 공통된 인자이다. 이를 중심으로 두 모델을 통합하는 것은 하나의 모델에 다른 모델의 구성요소를 삽입하는 것과 같다. Although all logical thinking methods may be the same, in the requirements model, integration between them is centered around common factors. There are two requirements models in Figures 7 and 8. Common components are "Seamark" and "Normal Mode". Therefore, integration is possible around common factors. Specifically, the way to integrate models is to keep the shape of each requirements model topologically the same. This is the same concept as the general method of code integration. If the relationship between the components that make up the integrated requirements model remains the same for the above two requirements before integration, the integrated requirements are integrated into each requirement. This means that the meaning of the matter can be reflected correctly. This is explained based on the mathematical model as follows. In Figures 7 and 8, the Seamark component and the Normal Mode component are common factors. Integrating two models around this is the same as inserting components from another model into one model.

사용자가 요구사항을 정의할 때의 의도는 Normal Mode 아래에 네 가지 모드를 구성하는 것이므로 도 7의 Normal Mode 아래에 도 8의 네 가지 모드를 구성하면 된다. 이를 논리 관계로 표현하면, 도 7의 모델에서 도 8의 모델의 구성요소 중 동일한 구성요소를 중심으로 차상위 및 차하위 관계에 있는 동일하지 않은 구성요소를 삽입하고, 삽입된 구성요소와 순차관계에 있는 구성요소를 삽입하고, 또 그 구성요소와 계층관계인 구성요소를 삽입하는 식으로 반복하는 것이 두 모델을 통합하는 방법이다. Since the user's intention when defining requirements is to configure four modes under Normal Mode, the four modes shown in FIG. 8 can be configured under Normal Mode in FIG. 7. Expressing this in a logical relationship, in the model of FIG. 7, non-identical components in a next-higher and lower-lower relationship are inserted centering on the same component among the components of the model in FIG. 8, and in a sequential relationship with the inserted component. The way to integrate the two models is to repeat by inserting existing components and inserting components that have a hierarchical relationship with those components.

이 과정에서 각 모델의 위치는 구성요소 간의 위치관계를 구분하는데 사용된다. 예를 들어 중첩 순서쌍(Nested ordered pair)으로 표현되는 위치인 (1,3,4)는 차상위 구성요소의 위치가 (1,3)이고, (1,3,1), (1,3,2), (1,3,3) 등과 순차관계에 있다. 또 다른 예시로써, 위치 (1,6,7,3)의 차상위 구성요소는 (1,6,7)이고 차하위 구성요소는 (1,6,7,3,1)이 된다. 즉, 위치를 표현하는 중첩 순서쌍의 자리와 숫자는 모든 상위 구성요소의 위치를 포함하고 있다. 상기의 예시에서 상위 구성요소의 위치는 (1), (1,6), (1,6,7)이기 때문이다. 즉, 위치 표현을 통해서 요구사항 모델의 구성요소간 계층적 순차적 위치관계를 알 수 있다. 그러므로 상기의 통합 방법에서 하나의 요구사항 모델에 다른 요구사항 모델의 위치를 동일한 이름의 구성요소를 중심으로 차상위, 차하위, 순차관계를 순차적으로 삽입하는 것을 반복하면, 두 모델의 모든 구성요소의 통합이 가능하다. In this process, the position of each model is used to distinguish the positional relationship between components. For example, in the position (1,3,4) expressed as a nested ordered pair, the position of the next highest component is (1,3), (1,3,1), (1,3,2) ), (1,3,3), etc. are in a sequential relationship. As another example, the next highest component of position (1,6,7,3) is (1,6,7) and the next lowest component is (1,6,7,3,1). In other words, the positions and numbers of nested ordered pairs expressing positions include the positions of all higher-order components. This is because in the above example, the positions of the higher-level components are (1), (1,6), and (1,6,7). In other words, the hierarchical and sequential positional relationship between the components of the requirements model can be known through the positional expression. Therefore, in the above integration method, if the position of another requirements model is sequentially inserted into one requirements model with the next-highest, second-lowest, and sequential relationships centered on components with the same name, all components of the two models Integration is possible.

두 모델을 통합하는 방법은 여러 모델을 두 개씩 순차적으로 통합하는 방법을 제공하는 것과 동일하다. 이를 통해서 모든 요구사항 모델은 위치관계를 통한 통합이 가능하다.The method of integrating two models is the same as providing a method of sequentially integrating multiple models two at a time. Through this, all requirements models can be integrated through location relationships.

요구사항 모델이 코드와 일대일로 대응되므로, 각 요구사항 모델을 통합하는 것은 두 코드를 통합하는 것이고, 두 요구사항 모델의 형상이 각각 동일하게 통합되면 사용자가 의도한 두 코드를 통합하여 전체 코드를 구성하는데 의미의 왜곡이 없음을 의미한다. 때문에, 도 7 및 도 8에서 2 개의 모델은 동일한 이름을 중심으로 통합될 수 있다.Since the requirements model corresponds one-to-one with the code, integrating each requirements model means integrating the two codes, and if the shapes of the two requirements models are integrated equally, the two codes intended by the user are integrated to create the entire code. This means that there is no distortion of meaning in constructing it. Therefore, the two models in FIGS. 7 and 8 can be integrated around the same name.

상기에서 정의한 수학식 모델을 이용하여 보다 구체적으로 설명하면, 앞서 설명한 바와 같이 위치와 이름은 동일한 이름의 구성요소를 중심으로 통합이 가능하고, 논리 연산자, 명제, 데이터와 같은 구성요소의 멤버들은 동일한 이름의 구성요소에 대해서만 통합되고 동일한 이름이 존재하지 않는 구성요소들은 그대로 두면 된다.To explain in more detail using the mathematical model defined above, as explained previously, positions and names can be integrated around components with the same name, and members of components such as logical operators, propositions, and data are the same. Only the components of the name are integrated, and components that do not have the same name can be left as is.

예를 들어, 도 7 및 도 8의 두 모델에서 "Normal Mode"는 멤버간의 통합이 필요하지만, "Repair Mode" 나 "Tactical Mode"는 동일한 구성요소가 없으므로 통합할 대상이 없다. 동일한 구성요소의 통합은 각 멤버별로 수행된다. 요구사항 모델이 각 블록이 의미하는 행위를 기호화하여 구조화된 모델이고, 각 요구사항 모델은 단편적인 지식을 표현하고 있기 때문에, 동일한 행위 즉, 동일한 이름의 구성요소에 속한 멤버들은 다른 의미로 표현되어 있을 수 있다. 완성될 프로그램의 관점에서는 동일한 행위, 즉 동일한 구성요소의 멤버들은 단편적으로 표현된 여러 요구사항 모델의 멤버들과 통합되어 표현되어야 한다. 당연하게 동일한 이름의 구성요소가 존재하지 않으면, 그 구성요소의 멤버들은 통합될 대상이 없다.For example, in the two models of Figures 7 and 8, "Normal Mode" requires integration between members, but "Repair Mode" and "Tactical Mode" do not have the same components, so there is nothing to integrate. Integration of identical components is performed for each member. Since the requirements model is a structured model that symbolizes the actions represented by each block, and each requirements model expresses fragmented knowledge, members belonging to the same action, that is, components with the same name, are expressed with different meanings. There may be. From the perspective of the program to be completed, the same behavior, that is, members of the same component, must be expressed by integrating with the members of several requirements models expressed fragmentarily. Naturally, if there is no component with the same name, the members of that component have nothing to integrate with.

논리 연산자의 통합은 순차/선택/반복의 논리가 포함관계에 있으므로, 선택과 순차는 선택으로 선택과 반복은 반복으로 결정하면 된다. 명제는 모든 명제가 만족되어야 하므로 AND 논리로 통합되고, 데이터는 모든 구성요소에서 사용되어야 하므로 합집합으로 구성된다. 상기와 같이 동일한 구성요소에 대해서 멤버간의 통합하는 규칙을 수학적으로 표현하면 아래와 같다.Since the integration of logical operators involves the logic of sequence/selection/repetition, selection and sequence can be determined by selection, and selection and repetition can be determined by repetition. Propositions are unified by AND logic because all propositions must be satisfied, and data is composed of a union because it must be used in all components. As described above, the rules for integrating members of the same component can be mathematically expressed as follows.

- (정의) 동일한 구성요소간의 통합 방법- (Definition) Integration method between identical components

임의의 구성요소 ealpha에 대해서 동일한 이름의 구성요소 e1alpha 와 e2alpha 를 통합한다.For an arbitrary component e alpha , the components e 1alpha and e 2alpha of the same name are combined.

여기서 e1alpha ∈ M1 , e2alpha ∈ M2 , ealpha ∈ M , e1alpha = e2alpha = ealpha , M1 ∪ M2 = M 이다.Here, e 1alpha ∈ M1, e 2alpha ∈ M2, e alpha ∈ M, e 1alpha = e 2alpha = e alpha , M 1 ∪ M 2 = M.

논리 연산자 통합 Logical operator integration

ealpha (sequence) ⊂ ealpha (selection) ⊂ ealpha (loop) ,e alpha (sequence) ⊂ e alpha (selection) ⊂ e alpha (loop),

e1alpha (sequence)ㆍe2alpha(selection) = e2alpha (selection)ㆍe1alpha (sequence) = ealpha (selection),e 1alpha (sequence)ㆍe 2alpha (selection) = e 2alpha (selection)ㆍe 1alpha (sequence) = ealpha (selection),

e1alpha (loop)ㆍe2alpha (selection) = e2alpha (selection)ㆍe1alpha (loop) = ealpha (loop),e 1alpha (loop)·e 2alpha (selection) = e 2alpha (selection)·e 1alpha (loop) = e alpha (loop),

e1alpha (loop)ㆍe2alpha (sequence) = e2alpha (sequence)ㆍe1alpha (loop) = ealpha (loop),e 1alpha (loop)·e 2alpha (sequence) = e 2alpha (sequence)·e 1alpha (loop) = e alpha (loop),

e1alpha (sequence)ㆍe2alpha (sequence) = ealpha (sequence) ,e 1alpha (sequence)ㆍe 2alpha (sequence) = e alpha (sequence),

e1alpha (selection)ㆍe2alpha (selection) = ealpha (selection) ,e 1alpha (selection)ㆍe 2alpha (selection) = e alpha (selection),

e1alpha (loop)ㆍe2alpha (loop) = ealpha (loop)e 1alpha (loop)ㆍe 2alpha (loop) = e alpha (loop)

명제 통합 Propositional integration

e1alpha(c)ㆍe2alpha(c) = ealpha(c)e 1alpha (c)ㆍe 2alpha (c) = e alpha (c)

데이터 통합 data integration

e1alpha(Dc) ∪ e2alpha(Dc) = ealpha(Dc)e 1alpha (D c ) ∪ e 2alpha (D c ) = e alpha (D c )

e1alpha(Dd) ∪ e2alpha(Dd) = ealpha(Dd)e 1alpha (D d ) ∪ e 2alpha (D d ) = e alpha (D d )

e1alpha(Da) ∪ e2alpha (Da) = ealpha(Da).e 1alpha (D a ) ∪ e 2alpha (D a ) = e alpha (D a ).

한편, 검증 방법을 설명하면 다음과 같다.Meanwhile, the verification method is explained as follows.

임의의 통합된 모델이 존재한다고 할 때, 그 모델에 대한 검증은 문법적으로 오류가 없는지, 사용자가 정의한 각 요구사항 모델이 올바르게 통합되었는지를 확인하는 것이다. 즉, 요구사항 모델이 문법적으로 올바르게 구성되었고, 각 요구사항 모델의 의미가 유지되도록 통합되었는지만 확인하면 된다.When an arbitrary integrated model exists, verification of the model is to check whether there are grammatical errors and whether each requirement model defined by the user has been correctly integrated. In other words, you only need to ensure that the requirements models are grammatically correctly structured and integrated so that the meaning of each requirements model is maintained.

문법적인 검증은 요구사항 모델에 대한 수학식 모델로 확인이 가능하다. 문법적인 검증은 각 구성요소의 올바른 구성과 구성요소 간의 문법적 오류를 검출하는 것으로 구분된다. 수학식 모델에서 정의된 형식으로 각 구성요소의 멤버가 정의되었는지를 확인하면 각 구성요소의 검증은 완료된다. 이는 구성요소의 멤버 구성이 정의에 일치되는지 확인하는 것이다. Grammatical verification can be confirmed with a mathematical model for the requirements model. Grammatical verification is divided into correct composition of each component and detection of grammatical errors between components. Verification of each component is completed by checking whether the members of each component are defined in the format defined in the mathematical model. This is to check whether the member composition of the component matches the definition.

구성요소 간의 문법적 오류는 사용자가 요구사항 모델을 정의할 때 범하게 되는 문법적 상충을 검출하는 것이다. 구성요소는 이름, 위치, 논리연산자, 명제, 선언/ 접근/ 조건 데이터로 구성되어 있으므로, 각 멤버 별로 구성요소 간의 상충여부만 확인하면 된다. 왜냐하면, 다른 종류의 멤버 간에는 상충이 존재하지 않기 때문이다. 즉, 위치에 대한 이름의 상충 여부는 존재하지 않는다. A 위치에서 B 이름을 사용한다고 해서, 문법적으로 오류를 유발하지 않는다는 의미이다. 다른 종류의 멤버들도 마찬가지다. Syntactic errors between components detect grammatical conflicts that users make when defining the requirements model. Since components are composed of name, location, logical operator, proposition, declaration/access/condition data, you only need to check for conflicts between components for each member. This is because there is no conflict between different types of members. In other words, there is no conflict of names for locations. This means that using the name B in place of A will not cause a grammatical error. The same goes for other types of members.

그러므로 하나의 요구사항 모델에서 구성요소 간의 상충은 각 멤버별로 확인된다. 이름은 프로그래밍을 수행하는 과정에서 고유한 식별자이므로, 하나의 모델에서 동일한 이름의 구성요소가 존재해서는 안된다. 위치는 요구사항 모델에서 구성요소 간의 관계에 의해서 자동으로 할당되는 값이므로 사용자가 오류를 범할 가능성은 없다. 사용자가 직접할당하지 않기 때문이다. 혹시 사용자가 임의로 위치 값을 변경하는 경우에는 최상위 구성요소 (1)에서부터 순차적으로 위치값을 할당하여 사용자가 임의로 할당한 값과 비교할 수 있다. Therefore, conflicts between components in a requirements model are checked for each member. Since the name is a unique identifier in the process of programming, components with the same name should not exist in one model. Since the location is a value automatically assigned based on the relationship between components in the requirements model, there is no possibility of user error. This is because the user does not directly assign it. If the user arbitrarily changes the position value, the position value can be assigned sequentially starting from the highest component (1) and compared with the value arbitrarily assigned by the user.

논리 연산자 및 조건 명제는 구성요소 간의 상충 요소가 존재하지 않는다. 선언데이터는 데이터의 출발점을 의미하므로 해당 구성요소보다 상위 구성요소에서 동일한 이름의 선언 데이터가 존재해서는 안된다. 접근 데이터는 상위 구성요소에서 선언한 데이터를 사용한다는 의미이므로 상위 구성요소에 선언 데이터가 존재해야 한다. 조건 데이터는 차상위 구성요소의 데이터를 명제에서 사용한다는 의미이므로 차상위 구성요소의 선언 및 접근 데이터에 조건 데이터가 포함되어야 한다. There are no conflicting elements between logical operators and conditional propositions. Since declaration data means the starting point of data, declaration data with the same name should not exist in a component higher than the corresponding component. Access data means using data declared in the parent component, so declared data must exist in the parent component. Since conditional data means that the data of the next-level component is used in the proposition, the conditional data must be included in the declaration and access data of the next-level component.

상기는 하나의 요구사항 모델에 대한 구성요소 간의 멤버 상충 요소들이다. 문법 검증은 요구사항 모델의 통합 이후에도 수행되어야 한다. 왜냐하면, 요구사항 모델의 데이터 사용은 하나의 모델 구성 관점에서 출발과 사용을 정의하고 있기 때문에, 모델의 범위가 넓어지면 데이터의 사용도 새롭게 정의되어야 하기 때문이다.The above are member conflict elements between components for one requirements model. Grammar verification should also be performed after integration of the requirements model. This is because the use of data in a requirements model defines the start and use from the perspective of constructing a single model, so when the scope of the model expands, the use of data must be newly defined.

요구사항 모델의 구성은 사용자의 의도를 나타내므로, 통합된 요구사항 모델에 대한 검증은 각 요구사항 모델이 통합모델에 원래의 의미대로 반영되었음을 확인하는 것이다. 모델은 수학식 모델에 의해서 위치, 이름, 논리연산자, 명제, 데이터로 구성되어 있으므로 각 멤버들이 올바르게 반영되었는지를 확인한다. 앞서 통합의 과정에서 설명한대로 각 요구사항 각각의 구성요소간의 위치 관계가 올바른지를 동일한 이름을 중심으로 확인이 가능하다. Since the composition of the requirements model represents the user's intention, verification of the integrated requirements model is to confirm that each requirements model is reflected in the integrated model as its original meaning. Since the model is composed of location, name, logical operator, proposition, and data according to the mathematical model, check whether each member is reflected correctly. As explained earlier in the integration process, it is possible to check whether the positional relationship between each component of each requirement is correct by focusing on the same name.

예를 들어, 도 7 및 도 8에 표현된 각각의 구성요소 간의 계층 및 순차 관계가 통합 모델에서도 동일하게 유지된다면, 통합모델에서 각 요구사항 모델의 구성이 동일하게 유지되므로, 위상학적으로 올바르게 구성되었다고 할 수 있다. 만약에 동일한 이름의 구성요소가 존재하지 않는다면, 통합될 수 없고 검증도 불필요하다. 왜냐하면 요구사항 모델에서 동일한 이름의 구성요소가 존재하지 않는다는 것은 통합을 위한 방법이 존재하지 않는 것과 같기 때문이다. 이 경우에는 동일한 이름이 구성되도록 요구사항 모델을 보다 상세하게 구성해야 한다. For example, if the hierarchical and sequential relationships between each component shown in Figures 7 and 8 remain the same in the integrated model, the configuration of each requirements model remains the same in the integrated model, so it is topologically correctly configured. It can be said that it has been done. If components with the same name do not exist, they cannot be integrated and verification is not necessary. This is because not having components with the same name in the requirements model means not having a method for integration. In this case, the requirements model must be structured in more detail so that the same names are configured.

위치와 이름을 통해서 도 7 및 도 8 에서 두 모델이 통합되는 것과 같이, 구성적으로 올바른지 검증되고 나면, 동일한 이름의 구성요소들은 앞서 정의한 통합 방법을 이용하여 논리연산자, 명제, 데이터가 올바르게 통합되었는지 검증할 수 있다.As the two models are integrated in Figures 7 and 8 through location and name, once it is verified that they are structurally correct, components with the same name are checked to see if logical operators, propositions, and data are correctly integrated using the previously defined integration method. It can be verified.

통합 모델에 대해 각 요구사항이 올바르게 통합되었는지를 수학식 모델을 통해서 설명하면 다음과 같다. 통합 모델은 각 요구사항 모델의 의미가 올바르게 통합되었으므로, 하나의 요구사항 모델을 구성하는 구성요소 간의 위치 관계가 유지되어야 한다. 다시 말해서, 하나의 요구사항 모델의 구성요소 간의 모든 차상위관계 및 순차관계가 통합 모델에서도 상위관계 및 순차관계로 유지되는지 확인되어야 한다. 통합 모델에서 각 구성요소의 이름은 고유한 식별자로 하나만 존재해야 한다. 이를 통해서 각 요구사항 모델의 위치와 이름이 올바르게 통합되었는지 검증이 가능하다. 나머지 멤버인 논리연산자와 조건, 데이터는 통합 모델의 동일한 이름의 구성요소에 각 요구사항 모델의 구성요소의 멤버가 포함되는지를 확인함으로써 검증이 수행된다. 이는 각 요구사항 모델의 의미가 통합모델에 올바르게 통합되었음을 수학적으로 검증하는 것이다.The mathematical model explains whether each requirement has been correctly integrated into the integrated model as follows. Since the meaning of each requirements model is correctly integrated in the integrated model, the positional relationship between the components that make up one requirements model must be maintained. In other words, it must be confirmed that all higher-order relationships and sequential relationships between components of one requirements model are maintained as higher-order relationships and sequential relationships in the integrated model. In an integrated model, each component must have only one name as a unique identifier. Through this, it is possible to verify whether the location and name of each requirements model are correctly integrated. The remaining members, such as logical operators, conditions, and data, are verified by checking whether the members of each requirements model's components are included in the components of the same name in the integrated model. This mathematically verifies that the meaning of each requirements model has been correctly integrated into the integrated model.

한편, 자동 프로그램이 완성되면, 선언된 모든 데이터는 수학식 모델을 통해 관리가 가능하다. 앞서 정의한 수학식 모델에서 사용되는 모든 데이터는 하나의 집합으로 통합하여 구성할 수 있고, 최하단의 내용에 의해서 변경되는 데이터를 구분할 수 있다. 그러므로 통합 모델의 위치를 기반으로 변경되는 데이터를 순차적으로 구성하는 것도 가능하다. 그러므로 통합 모델, 즉 코드의 어떤 위치에서의 값도 분석이 가능한 것이다. 또한, 특정 데이터가 통합 모델에서 어떻게 변경되고 구성되어 있는지 여러 관점에서 재구성이 가능하다. 이는 수학적으로 프로그램의 모든 데이터 분석이 가능함을 의미한다.Meanwhile, once the automatic program is completed, all declared data can be managed through a mathematical model. All data used in the mathematical model defined above can be integrated into one set, and data that changes can be distinguished by the content at the bottom. Therefore, it is also possible to sequentially configure data that changes based on the location of the integrated model. Therefore, the integrated model, that is, the value at any location in the code, can be analyzed. Additionally, it is possible to reconstruct from multiple perspectives how specific data is changed and structured in the integrated model. This means that mathematical analysis of all data in the program is possible.

또한, 여기에 개시된 실시형태들과 관련하여 설명된 방법 또는 알고리즘의 단계들은, 마이크로프로세서, 프로세서, CPU(Central Processing Unit) 등과 같은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 (명령) 코드, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. Additionally, the steps of the method or algorithm described in relation to the embodiments disclosed herein are implemented in the form of program instructions that can be executed through various computer means such as a microprocessor, processor, CPU (Central Processing Unit), etc., and are computer readable. Can be recorded on any available medium. The computer-readable medium may include program (instruction) codes, data files, data structures, etc., singly or in combination.

상기 매체에 기록되는 프로그램 (명령) 코드는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프 등과 같은 자기 매체(magnetic media), CD-ROM, DVD, 블루레이 등과 같은 광기록 매체(optical media) 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 (명령) 코드를 저장하고 수행하도록 특별히 구성된 반도체 기억 소자가 포함될 수 있다. The program (instruction) code recorded on the medium may be specially designed and constructed for the present invention, or may be known and usable by those skilled in the art of computer software. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tapes, optical media such as CD-ROM, DVD, and Blu-ray, and ROM and RAM. Semiconductor memory elements specially configured to store and execute program (instruction) code, such as RAM), flash memory, etc., may be included.

여기서, 프로그램 (명령) 코드의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.Here, examples of program (instruction) code include not only machine language code such as that created by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the present invention, and vice versa.

100: 프로그래밍 시스템
110: 입력부
120: 연산부
130: 전시부
140: 저장부
210: 모델 구조 정의 모듈
220: 구성 모듈
230: 구조 통합 모듈
240: 불일치 요소 식별 모듈
250: 코드 생성 모듈
100: Programming system
110: input unit
120: calculation unit
130: Exhibition Department
140: storage unit
210: Model structure definition module
220: configuration module
230: structural integration module
240: Mismatch element identification module
250: Code generation module

Claims (18)

다수의 요구사항 모델의 구조 정의(311) 및 내용 구성(312)을 위한 입력 정보를 입력받는 입력부(110);
다수의 상기 요구사항 모델간의 불일치 요소가 있는지를 식별하여 불일치 요소가 없으면 다수의 상기 요구사항 모델을 통합하여 통합 모델을 생성하고 상기 통합 모델의 코드 정보를 생성하는 연산부(120); 및
상기 연간부(120)의 제어에 따라 상기 불일치 구성요소에 해당하는 다수의 상기 요구사항 모델에 대한 정보를 출력하는 전시부(130);
를 포함하는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
An input unit 110 that receives input information for defining the structure of a plurality of requirements models (311) and configuring content (312);
an operation unit 120 that identifies whether there are inconsistencies between the multiple requirements models and, if there are no inconsistencies, integrates the multiple requirements models to create an integrated model and generates code information of the integrated model; and
an exhibition unit 130 that outputs information on a plurality of the requirements models corresponding to the mismatched components under the control of the annual unit 120;
A programming system through a requirements model comprising:
제 1 항에 있어서,
상기 연산부(120)는,
다수의 상기 요구사항 모델의 구조 정의(311)를 수행하는 모델 구조 정의 모듈(210);
조각 코드 또는 단일문장을 이용하여 다수의 상기 요구사항 모델의 내용 구성(312)을 수행하는 구성 모듈(220);
다수의 상기 요구사항 모델간 통합하는 구조 통합 모듈(230);
다수의 상기 요구사항 모델간 불일치 구성요소가 있는지를 식별하는 불일치 요소 식별 모듈(240); 및
상기 불일치 구성요소가 없으면 상기 코드 정보를 생성하는 코드 생성 모듈(250);을 포함하는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
According to claim 1,
The calculation unit 120,
a model structure definition module (210) that performs structure definition (311) of a plurality of the requirements models;
A configuration module 220 that configures the contents of a plurality of the requirements models using fragment codes or single sentences (312);
A structural integration module 230 that integrates a plurality of the requirements models;
an inconsistency element identification module 240 that identifies whether there are inconsistency components between a plurality of the requirements models; and
A programming system using a requirements model, comprising a code generation module (250) that generates the code information if there is no mismatched component.
제 2 항에 있어서,
상기 요구사항 모델의 구조는
반복 (명제) { }
선택 (명제) { }
순차 { }(여기서, 반복, 선택, 순차는 논리 연산자이고, 괄호 및 중괄호는 명제와 블록을 표현한다)을 포함하며, 상기 조각 코드 및 단일 문장은 상기의 논리 연산자로 구성되는 요구사항 모델 구조의 최하단의 중괄호내에 있는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
According to claim 2,
The structure of the requirements model is
repetition (proposition) { }
choice (proposition) { }
Contains a sequence { } (where repetition, selection, and sequence are logical operators, and parentheses and braces represent propositions and blocks) , and the fragment code and single statement are of the requirements model structure consisting of the above logical operators. A programming system through a requirements model, characterized by what is in the bottom curly brackets.
제 2 항에 있어서,
상기 불일치 요소 식별 모듈(240)은 다수의 상기 요구사항 모델간 불일치 구성요소가 있으면 상기 불일치한 구성요소를 수정하도록 표시하는 안내 정보를 생성하는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
According to claim 2,
The inconsistent element identification module 240 is a programming system through a requirements model, characterized in that if there are inconsistent components between a plurality of the requirements models, it generates guidance information indicating to correct the inconsistent components.
제 1 항에 있어서,
상기 구조 정의(311)는 논리 연산자를 이용하여 정의되는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
According to claim 1,
A programming system through a requirements model, characterized in that the structure definition 311 is defined using logical operators.
제 1 항에 있어서,
상기 구조 정의(311)는 각 구성요소의 위치 설정, 각 구성요소의 이름 설정, 각 구성요소의 논리 연산자 설정, 및 각 구성요소의 데이터 설정을 포함하며, 각 구성요소의 위치, 이름, 논리 연산자, 명제, 및 데이터는 각 구성요소의 멤버가 되는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
According to claim 1,
The structure definition 311 includes setting the location of each component, setting the name of each component, setting the logical operator of each component, and setting the data of each component, and setting the location, name, and logical operator of each component. , propositions, and data are members of each component. A programming system through a requirements model.
제 6 항에 있어서,
각 구성요소의 상기 멤버 및 상기 멤버에 대응되는 코드는 미리 룩업테이블로 구성되는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
According to claim 6,
A programming system using a requirements model, wherein the member of each component and the code corresponding to the member are configured in advance as a lookup table.
제 6 항에 있어서,
상기 각 구성요소는 최하위 구성요소(621), 상기 구성요소(621)의 인접한 상위에 놓이는 차상위 구성요소(622), 및 상기 구성요소(621)의 상위에 놓이는 구성요소(622, 623), 각 구성요소의 가장 상위에 놓이는 최상위 구성요소(623)로서, 구성요소 간의 계층적 관계를 이루는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
According to claim 6,
Each of the components includes a lowest component 621, a next-highest component 622 adjacent to the component 621, and components 622 and 623 located above the component 621. A programming system through a requirements model characterized by forming a hierarchical relationship between components as the highest level component (623) placed at the top of the components.
제 6 항에 있어서,
순차적 위치관계는 동일한 상기 차상위 구성요소(622)의 아래에 위치되는 구성요소(621) 간의 관계인 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
According to claim 6,
A programming system through a requirements model, characterized in that the sequential positional relationship is a relationship between components (621) located below the same next-level component (622).
제 6 항에 있어서,
상기 각 구성요소의 멤버인 이름은 자동 프로그래밍 과정 상에서 구성요소를 구분하는 고유한 식별자로 사용되는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
According to claim 6,
A programming system through a requirements model, characterized in that the member name of each component is used as a unique identifier to distinguish the component during the automatic programming process.
제 6 항에 있어서,
다수의 상기 구성요소는 명제 및 해당 구성요소와 관계된 데이터를 포함하는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
According to claim 6,
A programming system through a requirements model, wherein the plurality of components include propositions and data related to the components.
제 6 항에 있어서,
상기 통합은 위치와 동일한 이름의 구성요소를 중심으로 이루어지고, 상기 논리 연산자, 상기 명제, 상기 데이터를 포함하는 상기 각 구성요소의 멤버는 동일한 이름의 구성요소에 대해서만 통합되고, 동일한 이름이 존재하지 않는 구성요소는 그대로 유지되는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
According to claim 6,
The integration is centered on components with the same name and position, and the members of each component, including the logical operator, the proposition, and the data, are integrated only for components with the same name, and the members of each component, including the logical operator, the proposition, and the data, are integrated only for components with the same name. A programming system through a requirements model, wherein components that are not present are maintained as is.
제 12 항에 있어서,
상기 구성요소는 수학식 모델로 표현되는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
According to claim 12,
A programming system through a requirements model, wherein the components are expressed as a mathematical model.
(a) 입력부(110)가 다수의 요구사항 모델의 구조 정의(311) 및 내용 구성(312)을 위한 입력 정보를 입력받는 단계;
(b) 연산부(120)가 다수의 상기 요구사항 모델간의 불일치 요소가 있는지를 식별하여 불일치 요소가 없으면 다수의 상기 요구사항 모델을 통합하여 통합 모델을 생성하고 상기 통합 모델의 코드 정보를 생성하는 단계; 및
(c) 전시부(130)가 상기 연산부(120)의 제어에 따라 상기 불일치 구성요소에 해당하는 다수의 상기 요구사항 모델에 대한 상기 요구사항 모델의 구성요소 정보를 출력하는 단계;
를 포함하는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 방법.
(a) the input unit 110 receiving input information for defining the structure (311) and configuring content (312) of a plurality of requirements models;
(b) the calculation unit 120 identifies whether there are inconsistencies between the multiple requirements models, and if there are no inconsistencies, integrates the multiple requirements models to create an integrated model and generates code information for the integrated model. ; and
(c) the display unit 130 outputting component information of the requirements model for a plurality of the requirements models corresponding to the mismatched components under the control of the calculation unit 120;
A programming method through a requirements model comprising:
제 14 항에 있어서,
상기 (b) 단계는,
모델 구조 정의 모듈(210)이 다수의 상기 요구사항 모델의 구조 정의(311)를 수행하는 단계;
구성 모듈(220)이 조각 코드 또는 단일문장을 이용하여 다수의 상기 요구사항 모델의 내용 구성(312)을 수행하는 단계;
구조 통합 모듈(230)이 다수의 상기 요구사항 모델간 통합하는 단계;
불일치 요소 식별 모듈(240)이 다수의 상기 요구사항 모델간 불일치 구성요소가 있는지를 식별하는 단계; 및
코드 생성 모듈(250)이 상기 불일치 구성요소가 없으면 상기 코드 정보를 생성하는 단계;를 포함하는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 방법.
According to claim 14,
In step (b),
A model structure definition module 210 performing structure definition 311 of a plurality of the requirements models;
A configuration module 220 performing content configuration 312 of a plurality of the requirements models using fragment codes or single sentences;
The structural integration module 230 integrates a plurality of the requirements models;
identifying, by the inconsistent element identification module 240, whether there are inconsistent elements between a plurality of the requirements models; and
A programming method using a requirements model comprising: generating, by the code generation module 250, the code information if the mismatched component does not exist.
제 14 항에 있어서,
상기 구조 정의(311)는 각 구성요소의 위치 설정, 각 구성요소의 이름 설정, 각 구성요소의 논리 연산자 설정, 각 구성요소의 명제 설정 및 각 구성요소의 데이터 설정을 포함하며, 각 구성요소의 위치, 이름, 논리 연산자, 명제, 및 데이터는 각 구성요소의 멤버가 되는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 방법.
According to claim 14,
The structure definition 311 includes setting the position of each component, setting the name of each component, setting the logical operator of each component, setting the proposition of each component, and setting the data of each component. A programming method through a requirements model, wherein location, name, logical operator, proposition, and data become members of each component.
제 16 항에 있어서,
다수의 상기 요구사항 모델은 각 구성요소의 멤버를 기준으로 분류 및 관리되는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 방법.
According to claim 16,
A programming method through a requirements model, characterized in that the plurality of requirements models are classified and managed based on the membership of each component.
제 14 항 내지 제 17 항 중 어느 한 항에 따른 요구사항 모델을 통한 프로그래밍 방법을 실행시키기 위한 프로그램을 저장한 컴퓨터 판독 가능 저장매체.A computer-readable storage medium storing a program for executing a programming method using a requirements model according to any one of claims 14 to 17.
KR1020220078884A 2022-06-28 2022-06-28 Automatic programming system and method using programming model KR20240001943A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220078884A KR20240001943A (en) 2022-06-28 2022-06-28 Automatic programming system and method using programming model
PCT/KR2023/004725 WO2024005318A1 (en) 2022-06-28 2023-04-07 Automatic programming system and method using programing model

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220078884A KR20240001943A (en) 2022-06-28 2022-06-28 Automatic programming system and method using programming model

Publications (1)

Publication Number Publication Date
KR20240001943A true KR20240001943A (en) 2024-01-04

Family

ID=89380930

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220078884A KR20240001943A (en) 2022-06-28 2022-06-28 Automatic programming system and method using programming model

Country Status (2)

Country Link
KR (1) KR20240001943A (en)
WO (1) WO2024005318A1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190025261A (en) 2017-09-01 2019-03-11 박운철 Conversion service system and its method in real-time automatic programming language based on natural language speech recognition

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6681383B1 (en) * 2000-04-04 2004-01-20 Sosy, Inc. Automatic software production system
US20050166178A1 (en) * 2004-01-23 2005-07-28 Masticola Stephen P. Process for global software development
KR100935685B1 (en) * 2007-12-18 2010-01-08 한국전자통신연구원 Apparatus and Method for Developing Software
KR100976545B1 (en) * 2007-12-18 2010-08-17 티쓰리큐 주식회사 Requirement tracking and managing system of software development methodology by object-oriented language using interface
GB0912844D0 (en) * 2009-07-24 2009-08-26 Optimized Systems And Solution Process for development of monitoring tools

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190025261A (en) 2017-09-01 2019-03-11 박운철 Conversion service system and its method in real-time automatic programming language based on natural language speech recognition

Also Published As

Publication number Publication date
WO2024005318A1 (en) 2024-01-04

Similar Documents

Publication Publication Date Title
US11599356B1 (en) Systems and methods for legacy source code optimization and modernization
Ammann et al. Introduction to software testing
Meinicke et al. Mastering software variability with FeatureIDE
López-Fernández et al. Example-driven meta-model development
Kappel et al. Model transformation by-example: a survey of the first wave
US9754059B2 (en) Graphical design verification environment generator
Jackson Software Abstractions: logic, language, and analysis
Sánchez-Cuadrado et al. Bottom-up meta-modelling: An interactive approach
US10437574B2 (en) System and method for providing code completion features for code modules
Amrani et al. Formal verification techniques for model transformations: A tridimensional classification
Kahani et al. Comparison and evaluation of model transformation tools
Wille et al. Custom-tailored variability mining for block-based languages
CN109656813A (en) A kind of test case operation method and device
Barik Error messages as rational reconstructions
JP6651974B2 (en) Information processing apparatus, compiling method and compiler program
US10915302B2 (en) Identification and visualization of associations among code generated from a model and sources that affect code generation
KR20240001943A (en) Automatic programming system and method using programming model
JP6451417B2 (en) Debug support device, debug support system, debug support method, and debug support program
Syaifudin et al. Implementation and Evaluation of Self-learning Topic for SQLite Integration in Flutter Programming Learning Assistance System
US20100268676A1 (en) Reflective processing of computer hierarchies
Giraldo et al. Evidences of the mismatch between industry and academy on modelling language quality evaluation
Laird et al. The Soar User’s Manual Version 9.3. 2
Aras et al. A Framework Based on Compiler Design Techniques for Programming Learning Environments
Rhodes Supporting Inculcation of TDD in Novice Programmers Through Test Specification
Paranj et al. The Basics