KR102696519B1 - Automatic programming system and method using programming model - Google Patents
Automatic programming system and method using programming model Download PDFInfo
- Publication number
- KR102696519B1 KR102696519B1 KR1020220078884A KR20220078884A KR102696519B1 KR 102696519 B1 KR102696519 B1 KR 102696519B1 KR 1020220078884 A KR1020220078884 A KR 1020220078884A KR 20220078884 A KR20220078884 A KR 20220078884A KR 102696519 B1 KR102696519 B1 KR 102696519B1
- Authority
- KR
- South Korea
- Prior art keywords
- component
- model
- requirements
- components
- models
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
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
정의된 자동화 작업(프로그래밍)에 대해서는 사용자의 개입이 불필요한 요구사항 모델을 통한 프로그래밍 시스템이 개시된다. 상기 프로그래밍 시스템은, 다수의 요구사항 모델의 구조 정의 및 내용 구성을 위한 입력 정보를 입력받는 입력부, 다수의 상기 요구사항 모델간의 불일치 요소가 있는지를 식별하여 불일치 요소가 없으면 다수의 상기 요구사항 모델을 통합하여 통합 모델을 생성하고 상기 통합 모델의 코드 정보를 생성하는 연산부, 및 상기 연산부의 제어에 따라 상기 불일치 구성요소에 해당하는 다수의 상기 요구사항 모델에 대한 정보를 출력하는 전시부를 포함하는 것을 특징으로 한다.A programming system using a requirements model that does not require user intervention for a defined automated task (programming) is disclosed. The programming system is characterized by including an input unit that receives input information for defining the structure and configuring the contents of a plurality of requirements models, a calculation unit that identifies whether there are inconsistent elements among the plurality of requirements models, and if there are no inconsistent elements, integrates the plurality of requirements models to generate an integrated model and generates code information for the integrated model, and a display unit that outputs information on the plurality of requirements models corresponding to the inconsistent elements under the control of the calculation unit.
Description
본 발명은 자동 프로그래밍 수행 기술에 관한 것으로서, 더 상세하게는 모든 프로그래밍 언어의 표현을 포함하는 프로그래밍 모델을 도입하여 프로그램을 개발하는 과정을 자동화하는 자동 프로그래밍 시스템 및 방법에 대한 것이다.The present invention relates to an automatic programming execution technology, and more specifically, to an automatic programming system and method for automating the process of developing a program by introducing a programming model including expressions of all programming languages.
기존의 자동 프로그래밍을 수행하는 방법에는 수학적인 명세를 이용하여 수행하는 방법(Program Synthesis), 특정한 영역에서는 유효하지만 일반화되지 못하는, 특정 관점에서 구성된 프로그램의 조각을 조합하는 방법(Domain specific programming) 등이 있다. 이러한 방법은 완전한 자동화라고 보기 어렵다. Existing methods for performing automatic programming include methods using mathematical specifications (program synthesis) and methods that combine pieces of programs organized from a specific perspective that are valid in a specific domain but not generalizable (domain specific programming). These methods are difficult to regard as complete automation.
전자는 사용자가 요구사항 명세을 제공하면, 그 요구사항 명세를 이용하여 프로그래밍을 하는 과정에서 사용자의 개입이 요구되었고, 후자는 미리 정의된 특정한 기능에 대해서만 부분적인 자동화가 가능했기 때문이다. The former required user intervention in the process of programming using the requirements specification provided by the user, while the latter allowed partial automation only for specific predefined functions.
이러한 단점을 보완하는 방법으로 인공지능(Artificial Intelligence)을 이용하는 방법이 존재하지만, 이러한 방법 역시 경험적 데이터에 기반한 확률적인 접근 방법이다. 따라서, 여전히 사용자의 개입이 필요할 수 밖에 없다. 왜냐하면, 확률적인 접근은 아무리 사용자가 개입할 확률이 적더라도 그 확률은 존재하기 때문이다.There are methods that utilize artificial intelligence to compensate for these shortcomings, but these methods are also probabilistic approaches based on empirical data. Therefore, user intervention is still necessary. This is because, even if the probability of user intervention is low in a probabilistic approach, the probability exists.
본 발명은 위 배경기술에 따른 문제점을 해소하기 위해 제안된 것으로서, 프로그래밍 모델을 이용하여 사용자가 요구사항을 정의하는 것만으로 프로그램을 자동으로 완성할 수 있는 프로그래밍 시스템 및 방법을 제공하는데 그 목적이 있다.The present invention has been proposed to solve the problems according to the above background technology, and its purpose is to provide a programming system and method that can automatically complete a program by only defining requirements by a user using a programming model.
본 발명은 위에서 제시된 과제를 달성하기 위해 프로그래밍 모델을 이용하여 사용자가 요구사항 모델을 정의함으로써 자동으로 프로그래밍을 수행하는, 요구사항 모델을 통한 프로그래밍 시스템을 제공한다. 상기의 프로그래밍 모델이라 함은 프로그램의 제어구조를 수학적으로 표현할 수 있는 모델을 의미한다. The present invention provides a programming system using a requirements model, which automatically performs programming by allowing a user to define a requirements model using a programming model to achieve the task presented above. The programming model above refers to a model that can mathematically express the control structure of a program.
여기서 제어구조는 순차(Sequence), 선택(Selection), 반복(Loop)으로 구성되는 논리(Logic)이다. 프로그램의 실행은 제어구조라는 문맥상에서, 정의된 데이터에 어떠한 행위를 통해 새로운 값을 할당하는 것이다. Here, the control structure is a logic consisting of sequence, selection, and loop. The execution of the program is to assign a new value to the defined data through some action in the context of the control structure.
즉, 프로그램은 행위를 제어구조를 이용하여 구조화한 것이다. 여기서 행위는 프로그램의 실행명령과 같이 하나의 문장으로 구성될 수도 있고, 프로그램의 조각으로 구성될 수도 있다. 그러므로 프로그램은 프로그램을 구성하는 모든 제어구조 속에서 의도한 위치에 행위를 위치시키는 것이다. 프로그래밍 모델은 프로그램을 구성하고 있는 제어구조를 수학적 모델로 표현하여, 데이터와 행위들을 수학적 표현으로 구조화한 모델이다.That is, a program is a structure that uses control structures to structure behavior. Here, an action can be composed of a single sentence, such as a program execution command, or can be composed of a program fragment. Therefore, a program places an action in an intended location among all the control structures that compose the program. A programming model is a model that expresses the control structures that compose the program as a mathematical model and structures data and actions as mathematical expressions.
상기의 요구사항 모델이라 함은 사용자의 요구사항을 프로그래밍 모델을 이용하여 표현한 것을 의미한다. 본 발명은 상기의 요구사항 모델을 사용자가 구성하면, 이를 자동으로 통합하여 통합 모델을 구성하고, 요구사항 모델 및 통합 모델을 자동으로 검증하고, 상기의 통합 모델에 상응하는 코드를 생성하는 프로그래밍 시스템을 제공한다.The above requirements model means that the user's requirements are expressed using a programming model. The present invention provides a programming system that automatically integrates the above requirements models when the user configures them to configure an integrated model, automatically verifies the requirements model and the integrated model, and generates code corresponding to the integrated model.
상기 프로그래밍 시스템은,The above programming system,
다수의 요구사항 모델의 구조 정의 및 내용 구성을 위한 입력 정보를 입력받는 입력부;Input section for receiving input information for defining the structure and configuring the contents of multiple requirements models;
다수의 상기 요구사항 모델간의 불일치 요소가 있는지를 식별하여 불일치 요소가 없으면 다수의 상기 요구사항 모델을 통합하여 통합 모델을 생성하고 상기 통합 모델의 코드 정보를 생성하는 연산부; 및A computation unit that identifies whether there are inconsistent elements among a plurality of the above requirement models, and if there are no inconsistent elements, integrates the plurality of the above requirement models to generate an integrated model and generates code information of the integrated model; and
상기 연산부의 제어에 따라 상기 불일치 구성요소에 해당하는 다수의 상기 요구사항 모델의 구성요소 정보를 출력하는 전시부;를 포함하는 것을 특징으로 한다.It is characterized by including a display unit that outputs component information of a plurality of the requirement models corresponding to the mismatched components according to the control of the operation unit.
이때, 상기 연산부는, 다수의 상기 요구사항 모델의 구조 정의를 수행하는 모델 구조 정의 모듈; 조각 코드 또는 단일문장을 이용하여 다수의 상기 요구사항 모델의 내용 구성을 수행하는 구성 모듈; 다수의 상기 요구사항 모델들을 통합하는 구조 통합 모듈; 상기 다수의 상기 요구사항 모델간 불일치 구성요소가 있는지를 식별하는 불일치 요소 식별 모듈; 및 상기 불일치 구성요소가 없으면 상기 코드 정보를 생성하는 코드 생성 모듈;을 포함하는 것을 특징으로 한다. At this time, the operation unit is characterized by including a model structure definition module that performs structural definition of a plurality of the requirement models; a configuration module that performs content configuration of a plurality of the requirement models using a piece of code or a single sentence; a structure integration module that integrates a plurality of the requirement models; an inconsistent element identification module that identifies whether there is an inconsistent element between the plurality of the requirement models; and a code generation module that generates the code information if there is no inconsistent element.
또한, 상기 요구사항 모델의 구조는In addition, the structure of the above requirements model is
반복 (명제) { }Repeat (proposition) { }
선택 (명제) { }Choice (proposition) { }
순차 { } (여기서, 반복, 선택, 순차는 논리 연산자이고, 괄호 및 중괄호는 명제와 블록을 표현한다)을 포함하며, 상기 조각 코드 및 단일 문장은 상기의 논리 연산자로 구성되는 요구사항 모델 구조의 최하단의 중괄호내에 있는 것을 특징으로 한다. A sequence { } (where repetition, selection, and sequence are logical operators, and parentheses and curly brackets express propositions and blocks) , wherein the fragment code and single statement are characterized in that they are within the curly brackets at the bottom of the requirements model structure consisting of the logical operators.
또한, 최하단의 상기 중괄호는 상기 중괄호내 더 이상의 중괄호가 없는 중괄호인 것을 특징으로 한다.Additionally, the lowermost curly bracket is characterized by being a curly bracket with no further curly brackets within the curly bracket.
또한, 상기 불일치 요소 식별 모듈은 상기 다수의 상기 요구사항 모델간 불일치 구성요소가 있으면 상기 불일치한 구성요소를 수정하도록 표시하는 안내 정보를 생성하는 것을 특징으로 한다.In addition, the above-described inconsistent element identification module is characterized by generating guidance information indicating that inconsistent elements should be modified when there are inconsistent elements among the above-described multiple requirement models.
또한, 상기 구조 정의는 논리 연산자를 이용하여 정의되는 것을 특징으로 한다.In addition, the above structural definition is characterized in that it is defined using logical operators.
또한, 상기 구조 정의는 각 구성요소의 위치 설정, 각 구성요소의 이름 설정, 각 구성요소의 논리 연산자 설정, 및 각 구성요소의 데이터 설정을 포함하는 것을 특징으로 한다. 여기서 각 구성요소의 위치, 이름, 논리 연산자, 여러 용도의 데이터는 각 구성요소의 멤버가 된다.In addition, the above structural definition is characterized by including 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 position, name, logical operator, and data for various purposes of each component become members of each component.
또한, 상기 각 구성요소의 멤버 및 상기 멤버에 대응되는 코드는 미리 룩업테이블로 구성되는 것을 특징으로 한다.In addition, the members of each of the above components and the codes corresponding to the members are characterized by being configured in advance as a lookup table.
또한, 상기 각 구성요소는 가장 아래 계층의 최하위 구성요소, 상기 구성요소의 인접한 상위에 놓이는 차상위 구성요소, 차상위 구성요소를 포함한 상위에 놓이는 상위 구성요소, 임의의 구성요소의 인접한 하위에 놓이는 차하위 구성요소, 차하위 구성요소를 포함하여 하위에 놓이는 하위 구성요소, 상기 각 구성요소의 가장 상위에 놓이는 최상위 구성요소, 상기 각 구성요소의 가장 하위에 놓이는 최하위 구성요소로, 구성요소 간의 계층적인 관계를 구분한다.In addition, each of the above components distinguishes the hierarchical relationship between the components by including the lowest component of the lowest layer, the next higher component located adjacent to the above component, the upper component located above including the next higher component, the next lower component located adjacent to any component, the lower component located below including the next lower component, the top component located above each of the above components, and the lowest component located below each of the above components.
또한, 상기 각 구성요소가 동일한 상기 차상위 구성요소 아래에 위치되는 구성요소 간의 순서를 순차적 관계로 구분하는 것을 특징으로 한다.In addition, the above components are characterized in that the order between the components positioned under the same upper-level component is distinguished by a sequential relationship.
또한, 상기 각 구성요소의 멤버인 이름은 자동 프로그래밍 과정 상에서 구성요소를 구분하는 고유한 식별자로 사용되는 것을 특징으로 한다.In addition, the member name of each of the above components is characterized by being used as a unique identifier to distinguish the components during the automatic programming process.
또한, 상기 각 구성요소는 명제 및 구성요소와 관계된 데이터를 포함하는 것을 특징으로 한다.In addition, each of the above components is characterized by including data related to the proposition and the component.
또한, 상기 통합은 동일한 이름의 구성요소를 중심으로 이루어지고, 상기 논리 연산자, 상기 명제, 상기 데이터를 포함하는 상기 각 구성요소의 멤버는 동일한 이름의 구성요소에 대해서만 통합되고, 동일한 이름이 존재하지 않는 구성요소는 그대로 유지되는 것을 특징으로 한다.In addition, the integration is centered on 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 components that do not have the same name 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 provides an automatic programming method including: (a) a step in which an input unit receives input information for defining the structure and configuring the contents of a plurality of requirement models; (b) a step in which a calculation unit identifies whether there is an inconsistent element among the plurality of requirement models, and if there is no inconsistent element, integrates the plurality of requirement models to generate an integrated model and generates code information of the integrated model; and (c) a step in which a display unit outputs component information of the requirement models for the plurality of requirement models corresponding to the inconsistent elements under the control of the calculation unit.
이때, 상기 (b) 단계는, 모델 구조 정의 모듈이 다수의 상기 요구사항 모델의 구조 정의를 수행하는 단계; 구성 모듈이 조각 코드 또는 단일문장을 이용하여 다수의 상기 요구사항 모델의 내용 구성을 수행하는 단계; 구조 통합 모듈이 다수의 상기 요구사항 모델간 통합하는 단계; 불일치 요소 식별 모듈이 다수의 상기 요구사항 모델간 불일치 구성요소가 있는지를 식별하는 단계; 및 코드 생성 모듈이 상기 불일치 구성요소가 없으면 상기 코드 정보를 생성하는 단계;를 포함하는 것을 특징으로 한다.At this time, the step (b) is characterized by including a step in which a model structure definition module performs a structural definition of a plurality of the requirement models; a step in which a configuration module performs a content configuration of a plurality of the requirement models using a piece of code or a single sentence; a step in which a structure integration module integrates a plurality of the requirement models; a step in which a mismatch element identification module identifies whether there are mismatch elements between a plurality of the requirement models; and a step in which a code generation module generates the code information if there are no mismatch elements.
또한, 다수의 상기 요구사항 모델은 각 구성요소의 멤버를 기준으로 분류 및 관리되는 것을 특징으로 한다.Additionally, many of the above requirements models are characterized by being classified and managed based on the members 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 structures and contents of code can be mathematically expressed and related, and through this, a machine can integrate individual requirement models, detect grammatical and integrated errors, and automatically generate code.
또한, 본 발명의 다른 효과로서는 각 구성요소에 앞서 설명한 내용을 구성하는 방법과 동일하게 자연어로 구성된 설명을 구성요소의 멤버로 추가가 가능하며, 이는 설명을 수학적인 논리로 구조화된 형태로 관계화할 수 있음을 의미하고, 소프트웨어 개발과 관계된 모든 산출물을 수학적으로 체계화된 시스템으로 관리가 가능하다는 점을 들 수 있다.In addition, another effect of the present invention is that it is possible to add a description composed in natural language as a member of a component in the same way as the method of composing the contents described above for each component, which means that the description can be structured in a mathematical logic-structured form, and that all outputs related to software development can be managed as a mathematically systematized system.
또한, 본 발명의 또 다른 효과로서는 프로그래밍을 다른 사람이 만들어 놓은 요구사항 모델, 요구사항 모델의 구조, 요구사항 모델의 내용을 각각 도입하고 조합하여 프로그램을 완성하는 기능을 지원할 수 있다는 점을 들 수 있다.In addition, another effect of the present invention is that it can support the function of completing a program by introducing and combining a requirements model, a structure of a requirements model, and the contents of a requirements model created by another person.
또한, 본 발명의 또 다른 효과로서는 요구사항 모델, 요구사항 모델의 구조, 요구사항 모델의 내용을 개별 매매가 가능하고, 이러한 매매를 수행하는 온라인/ 오프라인 플랫폼의 운영을 가능하게 할 수 있다는 점을 들 수 있다.In addition, another effect of the present invention is that it is possible to individually trade requirements models, the structure of requirements models, and the contents of requirements models, and to operate an online/offline platform that performs such trading.
이러한 발명의 효과가 가능한 것은 요구사항 모델을 구성하는데 사용되는 프로그래밍 모델이, 완벽하게 프로그래밍 언어를 수학적인 모델로 대체할 수 있기 때문이다. 프로그래밍 언어는 일반적인 언어의 사용과 유사하기 때문에, 명확하게 기술을 하더라도 문장 간의 관계를 정확하게 표현하는 것이 어렵다. 어느 부분이 서로 접하는 부분이고 어느 부분이 동일한 정보인지 일일이 설명하기도 어렵고, 구조적인 형태로도 표현이 불가능하다. 수학적 표현의 장점은 어느 기호가 동일한 기호이고 기호 간에 어떠한 관계가 설정되어 있는지 명확하게 파악할 수 있다는 것이다.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. Since the programming language is similar to the use of a general language, it is difficult to accurately express the relationship between sentences even if it is clearly described. It is difficult to explain in detail which parts are in contact with each other and which parts are the same information, and it is impossible to express it in a structural form. The advantage of the mathematical expression is that it is possible to clearly identify which symbols are the same symbols and what relationships are established between symbols.
프로그램의 모든 의미는 물리적으로 회로상에서 표현된다. 회로는 0, 1의 데이터 상태를 명령문을 통해서 변경시킴으로써 의미를 갖는 행위를 수행한다. 이러한 명령문은 AND, OR, NOT, GOTO 라는 논리 연산자를 이용하여 구조화됨으로써 프로그램이 된다. 구조적 프로그래밍(Structured Programming)의 개념에서 회로상의 논리 연산자는 순차(Sequence), 선택(Selection), 반복(Loop)라는 제어 구조로 프로그램의 명령문들을 구조화한다. All meaning of a program is physically expressed in a circuit. The circuit performs meaningful actions by changing the data state of 0 and 1 through statements. These statements are structured using logical operators called AND, OR, NOT, and GOTO to become a program. In the concept of structured programming, logical operators on the circuit structure the program statements into 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, if the relationship between control structures of structural programming is expressed mathematically, it is the same as being able to express all logical structures on a circuit.
본 발명에서는 이러한 제어 구조 간의 관계를 수학적으로 표현하는 모델을 도입하였으므로, 모든 프로그래밍 언어가 갖는 제어구조를 수학적으로 표현할 수 있다. Since the present invention introduces a model that mathematically expresses the relationship between such control structures, it is possible to mathematically express the control structures of all programming languages.
또한, 프로그래밍 모델이 프로그래밍 언어마다 갖는 명령문 및 데이터의 차별성을 포용하면 프로그래밍 모델은 모든 프로그래밍 언어의 특징을 통합하는 표현이 될 수 있다. 결국 프로그래밍 언어의 제어 구조 간의 관계를 표현하는 수학적인 모델을 도입함으로써 본 발명에서 설명하는 모든 방법들이 유도되었다.In addition, 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 the methods described in the present invention were derived by introducing a mathematical model that expresses the relationships between control structures of programming languages.
기존의 수학적인 모델링을 통해서는 이렇게 되지 못했던 이유는 제어 구조 간의 관계를 수학적으로 표현하지 못했기 때문이다. 현재까지 알려진 가장 광범위하고 널리 쓰이는 수학적 표현은 튜링머신(Turing Machine)이다. The reason why this could not be achieved through existing mathematical modeling is because the relationship between control structures could not be expressed mathematically. The most extensive and widely used mathematical representation known to date is the Turing Machine.
튜링머신은 임의의 프로그램이 있다고 가정했을 때, 초기값을 주고 그 프로그램을 실행함으로써 얻게 되는 결과 데이터를 통해서 모델링을 수행하는 방법이다. 즉, 프로그램의 실행에 의한 데이터의 천이(Transition) 관계를 모델링하는 것이다. A Turing machine is a method of modeling by assuming that there is an arbitrary program, giving an initial value, and executing the program to obtain the resulting data. In other words, it models the transition relationship of data due to the execution of the program.
이러한 모델링 방법은 제어 구조가 상이하지만 동일한 결과를 도출하는 프로그램 간의 제어 구조의 차이를 구분하지 못한다. 즉, 제어 구조에 대해 비결정성을 갖는다. 이것은 제어 구조의 관계를 명확하게 규정짓지 못함을 의미하고, 결국 모델과 코드 간의 대응관계를 모호하게 한다. 그렇기 때문에 이러한 모델링 개념에 기반한 수학적 명세를 이용한 통합(Program Synthesis) 는 자동프로그래밍을 실현하지 못했다.This modeling method cannot distinguish the difference in control structures between programs that produce the same results even though the control structures are different. In other words, it has non-determinism for the control structures. This means that the relationship between the control structures cannot be clearly defined, which ultimately makes the correspondence between the model and the code ambiguous. Therefore, the integration (program synthesis) using the mathematical specification based on this modeling concept has not been able to realize automatic programming.
도 1은 본 발명의 일실시예에 따른 프로그래밍 시스템의 구성 블럭도이다.
도 2는 도 1에 도시된 연산부의 세부 구성 블럭도이다.
도 3은 본 발명의 일실시예에 따른 요구사항 모델을 통한 프로그래밍 개념도이다.
도 4는 본 발명의 일실시예에 따른 요구사항 모델을 통한 프로그래밍 과정을 보여주는 흐름도이다.
도 5는 본 발명의 일실시예에 따른 코드의 예시이다.
도 6은 본 발명의 일실시예에 따른 논리 연산자를 생략한 구성요소 간의 위치관계를 표현한 예시이다.
도 7은 본 발명의 일실시예에 따른 구성요소의 이름과 위치관계로만 표현된 요구사항 모델의 예시이다.
도 8은 도 7과 함께 요구사항 모델의 정의와 통합 등의 개념을 설명하기 위한 요구사항 모델의 예시이다.Figure 1 is a block diagram of a programming system according to one embodiment of the present invention.
Figure 2 is a detailed block diagram of the operation unit illustrated in Figure 1.
Figure 3 is a programming concept diagram using a requirements model according to one embodiment of the present invention.
Figure 4 is a flowchart showing a programming process using a requirements model according to one embodiment of the present invention.
Figure 5 is an example of code according to one embodiment of the present invention.
FIG. 6 is an example expressing the positional relationship between components with logical operators omitted according to one embodiment of the present invention.
Figure 7 is an example of a requirements model expressed only in terms of names and positional relationships of components according to one embodiment of the present invention.
Figure 8 is an example of a requirements model to explain the concepts of definition and integration of requirements models together with Figure 7.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 상세한 설명에 구체적으로 설명하고자 한다. 그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.The present invention can have various modifications and various embodiments, and specific embodiments are illustrated in the drawings and specifically described in the detailed description. However, this is not intended to limit the present invention to specific embodiments, but should be understood to include all modifications, equivalents, or substitutes included in the spirit and technical scope of the present invention.
각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 제 1, 제 2등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. In describing each drawing, similar reference numerals are used for similar components. The terms first, second, etc. may be used to describe various components, but the components should not be limited by the terms. The terms are used only to distinguish one component from another.
예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. "및/또는" 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.For example, without departing from the scope of the present invention, the first component could be referred to as the second component, and similarly, the second component could also be referred to as the first component. The term "and/or" includes any combination of a plurality of related listed items or any item among a plurality of related listed items.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미가 있다. Unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs.
일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않아야 한다.Terms defined in commonly used dictionaries should be interpreted as having a meaning consistent with their meaning in the context of the relevant art, and should not be interpreted in an idealized or overly formal sense, unless expressly defined in this application.
이하 첨부된 도면을 참조하여 본 발명의 일실시예에 따른 요구사항 모델을 통한 자동 프로그래밍 시스템 및 방법을 상세하게 설명하기로 한다.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 one embodiment of the present invention has the following characteristics.
① 사용자의 요구사항 모델을 자동으로 통합해주는 방법을 제공한다.① Provides a method to automatically integrate the user’s requirements model.
② 사용자의 요구사항 모델에 대한 불일치 구성요소를 식별해준다.② Identifies inconsistent components with the user’s requirements model.
③ 요구사항 모델의 구조와 내용을 코드와 대응시킨다(모델 통합이 완료되면 통합된 코드를 얻는다)③ Match the structure and content of the requirements model with the code (when model integration is complete, you get the integrated code)
④ 요구사항 모델의 구조와 내용이 수학적으로 표현된다(통합 및 검증 알고리즘이 존재한다)④ The structure and content 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 about composing the program. If the user knows only the purpose of the program he needs, he can select a completed program. If the user has the knowledge to modify the structure of the program, he can borrow the completed module according to the purpose of use and change the structure of the program. If the user has all the knowledge about composing the program, he can reconstruct the program from beginning to end.
본 발명의 일실시예는 이러한 모든 사용자에게 프로그램에 대한 지식을 정의된 논리식인 요구사항 모델로 구성하는 방법을 사용하게 함으로써 논리 조각들을 통합하고 검증하는 것에 대해서 기계적인 자동화의 유용성을 제공한다. 사용자가 프로그램에 대해서 잘 알지 못한다면, 프로그램에 구성되는 기능이 사용자가 원하는 기능으로 구성되었는지 알 수 없다. 그러므로, 앞서 설명한 바와 같이 사용자는 자신이 아는 지식을 기반으로 프로그램을 선택하거나 일부만 구성하거나 전부를 구성할 수 있다. 공상과학 영화에서처럼 사용자가 알지못하는 기능을 프로그래밍 기계가 알아서 구현하는 것은 자동화에 대한 잘못된 편견이다. 이러한 상황은 다만 프로그래밍 기계가 제공한 기능에 사용자가 만족함을 의미할 뿐이다.One embodiment of the present invention provides the utility of mechanical automation for integrating and verifying logical fragments by allowing all such users to use a method of organizing their knowledge of the program into a defined logical formula, a requirements model. If the user does not know much about the program, he cannot know whether the functions configured in the program are the functions that the user wants. Therefore, as explained above, the user can select, configure only part of, or configure all of the program based on his knowledge. It is a misconception about automation that the programming machine automatically implements functions that the user does not know, as in science fiction movies. 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 the definition of programming. The main concept of the present invention is how the requirements model that a user must provide to a programming machine is structured and what role the programming machine must automatically perform.
도 1은 본 발명의 일실시예에 따른 프로그래밍(즉, 컴퓨팅) 시스템(100)의 구성 블럭도이다. 도 1을 참조하면, 프로그래밍 시스템(100)은, 다수의 요구사항 모델의 구조 정의 및 내용 구성을 위한 입력 정보를 입력받는 입력부(110), 요구사항 모델간의 불일치 요소가 있는지를 식별하여 불일치 요소가 없으면 다수의 요구사항 모델을 통합하여 코드를 생성하는 연산부(120), 연산부(120)의 제어에 따라 상기 불일치 요소에 해당하는 다수의 상기 요구사항 모델들에 대한 불일치 정보를 출력하는 전시부(130), 및 요구사항 모델과 관계된 정보를 저장하는 저장부(140) 등을 포함하여 구성될 수 있다.FIG. 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) may be configured to include an input unit (110) that receives input information for defining the structure and configuring the contents of a plurality of requirement models, a calculation unit (120) that identifies whether there is an inconsistent element between requirement models and, if there is no inconsistent element, integrates the plurality of requirement models to generate code, a display unit (130) that outputs inconsistency information for the plurality of requirement models corresponding to the inconsistent element under the control of the calculation unit (120), and a storage unit (140) that stores information related to the requirement models.
입력부(110)는 사용자의 명령을 입력받는 기능을 수행한다. 물론, 입력받은 입력정보를 디지털 정보로 변환할 수도 있다. 입력 정보는 문자가 될 수 있으나, 이에 한정되는 것은 아니며, 음성 또는 행위가 될 수 있다. 이를 위해, 입력부(110)는, 키보드, 마이크, 터치 스크린, 카메라, DSP(Digital Signal Processor) 등을 포함하여 구성될 수 있다.The input unit (110) performs the function of receiving a user's command. Of course, the input information received can be converted into digital information. The input information can be text, but is not limited thereto, and can be voice or action. For this purpose, the input unit (110) can be configured to include a keyboard, a microphone, a touch screen, a camera, a DSP (Digital Signal Processor), etc.
연산부(120)는 다수의 상기 요구사항 모델간의 불일치 요소가 있는지를 식별하여 불일치 요소가 없으면 다수의 상기 요구사항 모델을 통합하여 코드를 생성하는 기능을 수행한다. 부연하면, 사용자가 요구사항 모델을 구조 정의와 내용 구성 순으로 논리화하면, 연산부(120)는 요구사항 모델의 구조를 통합하고 요구사항 모델 간의 불일치 요소가 존재하면 그것을 식별하여 전시부(130)을 통해 사용자에게 알려준다. The operation unit (120) identifies whether there are inconsistent elements among the plurality of requirement models, and if there are no inconsistent elements, integrates the plurality of requirement models to generate code. In other words, when the user logicalizes the requirement models in the order of structure definition and content composition, the operation unit (120) integrates the structure of the requirement models, and if there are inconsistent elements among the requirement models, identifies them and informs the user through the display unit (130).
이에 따라, 사용자는 입력부(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 any inconsistent elements, the operation unit (120) integrates the currently configured requirements models to generate code information. Accordingly, the user obtains code in which all requirements models are correctly reflected.
코드는 주로 실행 프로그램을 만드는 과정에서 이용되며, 컴퓨터 프로그램을 사람이 읽을 수 있는 프로그래밍 언어로 기술한 텍스트 파일이 될 수 있다.Code is primarily used in the process of creating executable programs, 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 requirement information for a requirement model corresponding to a non-conformance element under the control of the operation unit (120). Of course, a screen for inputting input information to the user, a guidance screen for guiding the input, an execution screen for execution, etc. can be provided. The display unit (130) can be an LCD (Liquid Crystal Display), an LED (Light Emitting Diode) display, an OLED (Organic LED) display, a touch screen, a flexible display, etc. 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 (140) performs a function of storing a requirements model, code information, etc. Of course, it includes a program, software, data, etc. that implements an algorithm that integrates the requirements model. Accordingly, the storage (140) may include a flash memory type, a hard disk type, a multimedia card micro type, a card type memory (for example, an SD (Secure Digital) or XD (eXtreme Digital) memory, etc.), a RAM (Random Access Memory), a SRAM (Static Random Access Memory), a ROM (Read Only Memory, ROM), an EEPROM (Electrically Erasable Programmable Read Only Memory), a PROM (Programmable Read Only Memory), a magnetic memory, a magnetic disk, an optical disk, etc. In addition, it may operate in relation to a web storage that performs a storage function on the Internet, or a cloud server.
도 2는 도 1에 도시된 연산부(120)의 세부 구성 블럭도이다. 도 2를 참조하면, 연산부(120)는, 모델 구조 정의 모듈(210), 구성 모듈(220), 구조 통합 모듈(230), 불일치 요소 식별 모듈(240), 코드 생성 모듈(250) 등을 포함하여 구성될 수 있다. Figure 2 is a detailed configuration block diagram of the operation unit (120) illustrated in Figure 1. Referring to Figure 2, the operation unit (120) may be configured to include a model structure definition module (210), a configuration module (220), a structure integration module (230), a mismatch element identification module (240), a code generation module (250), etc.
모델 구조 정의 모듈(210)은 입력부(110)로부터 하나의 요구사항 모델의 구조 정의를 위한 입력 정보를 전달받아 요구사항 모델의 구조를 정의하는 기능을 수행한다. 부연하면, 각 구성요소의 위치 설정, 각 구성요소의 이름 설정, 각 구성요소의 논리 연산자 설정, 각 구성요소의 데이터 설정 등을 들 수 있다.The model structure definition module (210) receives input information for defining the structure of a requirement model from the input unit (110) and performs the function of defining the structure of the requirement model. In detail, this may include 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 a single requirements model. In other words, the contents may correspond to a single sentence or a piece of code. A piece of code refers to a collection of codes that a user sets in advance for reuse.
구조 통합 모듈(230)은 요구사항 모델간 통합하는 기능을 수행한다. 부연하면, 통합은 구성요소의 이름과 위치를 이용하여 수행되고, 동일한 이름의 구성요소에 대해서는 구성요소의 모든 멤버들 간의 통합이 수행된다.The structural integration module (230) performs the function of integrating between requirement models. In other words, integration is performed using the name and location of the component, and for components with the same name, integration is performed between all members of the component.
불일치 요소 식별 모듈(240)은 요구사항 모델간 불일치 요소가 있는지를 식별하는 기능을 수행한다. 부연하면, 불일치 요소 식별은 개별 구성요소에 대한 문법적 오류 식별, 하나의 요구사항 모델에 대한 구성요소 간의 불일치 식별, 요구사항 모델 간의 불일치 식별로 구분되어 수행된다.The inconsistent element identification module (240) performs the function of identifying whether there are inconsistent elements between requirement models. In detail, the inconsistent element identification is performed by dividing into the identification of grammatical errors for individual components, the identification of inconsistencies between components for one requirement model, and the identification of inconsistencies between requirement 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 means a unit that processes at least one function or operation, which may be implemented in software and/or hardware. In the hardware implementation, it may be implemented as an ASIC (application specific integrated circuit), a DSP (digital signal processing), a PLD (programmable logic device), an FPGA (field programmable gate array), a processor, a microprocessor, other electronic units, or a combination thereof designed to perform the above-described function. In the software implementation, it may include software configuration components (elements), object-oriented software configuration components, class configuration components and task configuration components, processes, functions, properties, procedures, subroutines, segments of program code, drivers, firmware, microcode, data, databases, data structures, tables, arrays, and variables, etc. The software, data, etc. may be stored in 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 programming concept diagram using a requirements model according to one embodiment of the present invention. Referring to Figure 3, the programming concept diagram can be divided into a user function (310) and a programming machine function (320).
도 3을 설명하기에 앞서, 우선 자동 프로그래밍 개념을 설명하기로 한다. Before explaining Figure 3, let us first explain the concept of automatic programming.
프로그래밍을 자동으로 수행하는 것을 개념화하기 위해서는 어디서부터 어디까지가 사용자가 제공해야 하는 요구사항이고, 어느 부분이 기계가 수행해야 하는 프로그래밍인지 구분하여야 한다. 이를 위해서는 일반적인 프로그램(Imperative program)이 갖는 특성에 대해서 먼저 살펴보아야 한다. 여기서는 예시적으로 C code에 대해서 설명하지만, 다른 형태의 프로그래밍 언어도 코드의 구조와 내용으로 구성됨에 있어서는 동일한 특성을 갖는다.In order to conceptualize the automatic execution of programming, we must distinguish where the user-provided requirements begin and end, and where the machine-performed programming ends. To do this, we must first examine the characteristics of a general program (imperative program). Here, we will explain C code as an example, but other types of programming languages also have the same characteristics in terms of the structure and content of the code.
임의의 C code에서 논리 연산자가 포함된 문장을 제외한 모든 문장의 앞뒤에 중괄호를 넣는 것은 코드의 의미에 아무런 변화를 주지 않는다. 이 중괄호는 문장과 문장의 관계와 데이터의 사용 범위를 명확하게 구분해 준다. 코드는 실제로 이런 관계 표현에 기반해서 실행되지만, 텍스트 기반의 프로그래밍에서 프로그래머들의 사용 편의를 위해서 이러한 논리 구성이 생략되어 사용되고 있다. 또한, 이는 코드의 구조를 알고리즘화하기 위한 수학식 모델을 도입하는 방법일 뿐, 기존의 코드 의미에는 아무런 영향이 없다. 여기서 주의해야 할 것은 변수를 선언하면서 값을 할당하는 문장은 변수의 선언 문장과 값의 할당 문장으로 나누어야 한다는 것이다. 텍스트 기반의 프로그래밍에서는 사용자의 편의를 위해서 이러한 기능을 제공하지만, 코드의 구조와 내용을 구분하여 자동화하는 개념에서는 이러한 편의 기능이 프로그래밍의 알고리즘화를 저해하는 요소이다. 자동 프로그래밍을 통해서 구성되는 코드의 결과물은 코딩상의 특정한 편의 기능을 사용하지 않는다고 해서 표현의 범위에 제한이 되는 것은 아니므로, 이러한 가정은 일반화될 수 있다. In any C code, putting curly brackets before and after all sentences except those containing logical operators does not change the meaning of the code at all. These curly brackets clearly distinguish the relationship between sentences and the scope of data usage. The code is actually executed based on this relationship expression, but in text-based programming, this logical structure is omitted for the convenience of programmers. In addition, 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. It should be noted that the sentence that assigns a value while declaring a variable should be divided into a variable declaration sentence and a value assignment sentence. In text-based programming, this function is provided for the convenience of the user, but in the concept of automating the structure and content of the code by separating them, this convenience function is a factor that hinders the algorithmization of programming. Since the result of the code composed through automatic programming does not have a limited scope of expression even if it does not use a specific convenience function in coding, this assumption can be generalized.
상기와 같이 기존의 코드에 중괄호가 추가되면, 중괄호로 표현된 블록은 순차, 선택, 반복 논리로 구성되고, 논리 연산자와 결합된 명제로 표현된다. 예를 들면 아래와 같다.When curly brackets are added to the existing code as above, the block expressed in the curly brackets is composed of sequential, selection, and repetition logic, and is expressed as a proposition combined with a logical operator. For example, as follows.
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 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 curly brackets. The purpose of structuring the C code in this way is to explain that all codes are divided into structure and content. All codes other than the logical operator blocks defined below are divided into content, and the logical operators below are named as structures.
while (명제) { }while (proposition) { }
if (명제) { }if (proposition) { }
{ }{ }
상기에서 설명한 중괄호가 추가된 일반적인 코드에서 내용은 최하단에 구성된 중괄호 안에 존재한다. 상기의 코드에서 모든 단일문장의 앞뒤에 위치한 중괄호 안에는 단일문장이 있고, 그 문장의 내부에는 더 이상 중괄호가 없으므로, 해당 단일문장은 최하단의 중괄호 내에 있는 것이다. 즉, 코드는 논리의 구조와 최하단의 내용으로 구분되는 것이다. 이것은 일반적인 프로그램(Imperative Code)는 구조를 통해 단일문장들이 관계화되어 구현하고자 하는 것이 프로그래밍된 것임을 의미한다. 이것은 모든 일반적인 프로그램(Imperative program)에서 공통적으로 적용되는 특성이다. 그러므로 프로그래밍을 한다는 것은 논리의 구성을 앞서 설명한 구조로 구조화하고, 최하단에 적절한 내용(단일문장 또는 조각 코드)(313)으로 채우는 것을 의미한다. In the general code with the curly brackets added as described above, the content exists within the curly brackets configured at the bottom. In the above code, there is a single sentence within the curly brackets located before and after every single sentence, and since there are no more curly brackets inside that sentence, the single sentence is within the curly brackets at the bottom. In other words, the code is divided into the structure of logic and the content at the bottom. This means that a general program (imperative code) is something that is programmed to be implemented by relating single sentences through the structure. This is a characteristic that is commonly applied to all general programs (imperative programs). Therefore, programming means structuring the composition of logic into the structure described above and filling in the appropriate content (single sentence or piece of code) (313) at the bottom.
보다 구체적으로 도 5와 도7, 도8을 이용해서 설명하면 다음과 같다. 사용자는 프로그래밍을 할 때, 거시적인 기능 간의 관계를 먼저 구상하고, 이를 구체화하게 된다. 도 7은 Seamark 프로그램을 구성할 때 두 가지 모드(Repair Mode, Normal Mode)를 고려한 것이다. 이때 사용자는 두 모드 간의 관계를 형상화하고 두 모드가 실행되기 위한 조건을 고려할 수 있다. 물론 이때 사용되어야 하는 데이터도 구성할 수 있다. More specifically, using Figures 5, 7, and 8, the following explanation is provided. When programming, the user first conceptualizes the relationship between macroscopic functions and then concretizes it. Figure 7 shows two modes (Repair Mode, Normal Mode) considered when configuring the Seamark program. At this time, the user can visualize the relationship between the two modes and consider the conditions for the two modes to be executed. Of course, the data to be used can also be configured at this time.
하지만, 각 모드 내에서 수행되어야 할 구체적인 내용에 대해서는 생각할 필요가 없다. 아직은 그것을 고려할 단계가 아닌 것이다. 도 8은 Normal Mode에서 기능의 구성을 조금 더 구체화한 형태이다. Normal Mode 하부에 네가지 모드가 더 존재할 수 있다. 이때는 상기의 두가지 모드(Repair Mode, Normal Mode)에 대해서는 고려할 필요가 없다. 상기의 Normal Mode 하부의 네 가지 모드 간의 관계만 고려하면 된다. 이때 고려해야 할 사항은 각 구성요소의 위치, 이름, 논리연산자, 논리연산자와 결합되는 명제, 데이터의 사용 등이 될 것이다. However, there is no need to think about the specific content to be performed in each mode. It is not yet time to consider that. Figure 8 is a form that concretizes the configuration of functions in Normal Mode a little more. There can be four more modes under Normal Mode. At this time, there is no need to consider the two modes (Repair Mode, Normal Mode) above. It is sufficient to consider only the relationship between the four modes under Normal Mode above. At this time, the things to consider would be the location of each component, the name, the logical operator, the proposition combined with the logical operator, the use of data, etc.
위치, 이름, 논리 연산자, 논리 연산자와 결합된 명제는 구성요소간의 관계를 형상화하는데 사용된다. Seamark 프로그램이 어떻게 구성되어야 할지를 고려하는 것이다. 이후에 이 구성요소들이 정의된 기능을 수행하기 위해서 필요한 데이터를 구성한다. 이를 통해 프로그래밍의 기본 구성요소인 제어구조과 데이터의 사용을 완성할 수 있다. 이와 같은 방법으로 사용자는 순차적으로 요구사항 모델의 구조를 하나씩 구성해 갈 수 있다.Position, name, logical operator, and proposition combined with logical operator are used to visualize the relationship between components. It is to consider how the Seamark program should be structured. After that, the data required for these components to perform the defined function are organized. Through this, the use of control structures and data, which are the basic components of programming, can be completed. In this way, the user can sequentially organize the structure of the requirements model one by one.
그리고 이러한 요구사항 모델들은 동일한 구성요소인 Normal Mode를 중심으로 통합이 가능하다. 이는 코드를 통합하는 통상적인 방법과 동일하다. 당연하게도 Repair Mode와 Normal Mode는 Seamark 구성요소 하부에 위치하고, Normal Mode 하부에는 상기의 네 가지 모드가 순차적으로 구성된다. 이러한 관계를 알고리즘화하기 위해서 상기에 구성요소 간의 상위, 차상위, 차하위, 순차 관계를 설명한 것이다. 상기의 두 요구사항 모델이 통합되어 각 요구사항 모델 관점에서의 구성요소 간의 관계는 도 5에서 보는 바와 같이 코드가 통합된 형태로 표현될 수 있다. 사용자는 점진적으로 요구사항 모델들을 각 기능 관점에서 구성할 수 있고, 프로그래밍 기계는 이러한 요구사항 모델들을 자동으로 통합하는 것이다. And these requirement models can be integrated around the same component, Normal Mode. This is the same as the conventional method of integrating code. Naturally, Repair Mode and Normal Mode are located under the Seamark component, and the above four modes are sequentially configured under Normal Mode. In order to algorithmize this relationship, the superior, sub-superior, sub-inferior, and sequential relationships between the components are described above. When the two requirement models above are integrated, the relationship between the components from each requirement model perspective can be expressed in the form of integrated code, as shown in Fig. 5. The user can gradually configure requirement models from each functional perspective, and the programming machine automatically integrates these requirement models.
이렇게 각 요구사항 모델의 구성요소를 구성하다 보면, 그 이하에 더 이상 의미가 쪼개질 수 없는 또는 그 의미를 더 이상 쪼갤 필요가 없는 구성요소가 존재한다. 그 하부에는 재사용하는 조각코드나 단일문장을 위치시킬 수 있다. 이로써 모든 요구사항 모델의 구성요소들의 멤버가 정의된다. 이것이 요구사항 모델 구성하는 방법이고 이러한 요구사항 모델 구성이 완성되면 프로그래밍 기계는 모든 요구사항 모델을 통합하고 검증하여 코드를 자동으로 생성하게 된다.As you compose the components of each requirements model in this way, there are components below it that cannot be further divided or that do not need to be divided any further. You can place reusable code fragments or single sentences below them. This defines the members of all requirements model components. This is how to compose requirements models, and when 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) is composed of structure definitions (311-1 to 311-n) for each requirements model. The structure definitions (311-1 to 311-n) can be composed including 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.
본 발명의 일실시예에서 요구사항 모델은 다음과 같은 특성을 갖는다.In one embodiment of the present invention, the requirements model has the following characteristics.
1) 이름으로 식별되는 각 구성요소를 논리연산자와 계층적 순차적 위치관계를 이용하여 하나의 단편적인 요구사항 모델을 구성한다.1) Each component identified by name is used to construct a single fragmentary requirements model using logical operators and hierarchical sequential positional relationships.
2) 하나의 요구사항 모델의 최하단에는 내용을 구성할 수 있다.2) Content can be organized at the bottom of a requirements model.
3) 요구사항 모델을 구성하는 구조와 내용은 수학적으로 표현되고, 코드와 대응된다.3) The structure and content of the requirements model are expressed mathematically and correspond to code.
내용 구성(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 requirement model according to each requirement model. Each content composition (312-1 to 312-n) is composed of one content (313) for one component. The content (313) is composed of a single sentence or a piece of code.
사용자가 요구사항 모델의 구조 정의(311)와 내용 구성(312) 순으로 논리화하면, 연산부(120)는 요구사항 모델의 구조 통합(321)을 수행한다. When the user logicalizes the structural definition (311) and content composition (312) of the requirements model in that order, the operation unit (120) performs structural integration (321) of the requirements model.
구조를 통합하는 과정에서, 연산부(120)는 프로그래밍 기계를 이용하여 요구사항 모델 간의 불일치 구성요소 식별(322)을 수행한다. 부연하면, 불일치 구성요소 식별(322)이 발생하면, 연산부(120)는 이를 전시부(130)에 디스플레이하여, 사용자에게 현재 식별된 불일치 구성요소가 있음을 안내 정보로 알려준다. 여기서, 프로그래밍 기계는 모든 요구사항 모델의 의미가 유지되도록 요구사항 모델을 통합하는 알고리즘을 갖는 소프트웨어이다.In the process of integrating the structure, the operation unit (120) performs identification (322) of inconsistent components between requirement models using a programming machine. In detail, when identification (322) of inconsistent components occurs, the operation unit (120) displays this on the display unit (130) to inform the user that there is currently an inconsistent component identified as guidance information. Here, the programming machine is software having an algorithm for integrating requirement models so that the meaning of all requirement models is maintained.
또한, 프로그래밍 기계는 요구사항 모델 간의 불일치 구성요소를 식별할 수 있다. 또한, 프로그래밍 기계는 요구사항 모델의 구조 및 내용의 문법적 오류를 검증할 수 있다.In addition, the programming machine can identify inconsistent components between requirement models. In addition, the programming machine can verify grammatical errors in the structure and content of the requirement model.
또한, 프로그래밍 기계는 통합된 요구사항 모델을 코드에 대응시킬 수 있다.Additionally, the programming machine can map a unified requirements model to code.
도 3을 계속 참조하면, 사용자는 해당 구성요소를 수정함으로써 해당 요구사항 모델을 수정한다. 이러한 과정을 반복하여 사용자가 더 이상 요구사항 모델을 구성하지 않고, 프로그래밍 기계가 불일치 요소를 식별하지않는다면, 사용자는 프로그래밍 기계로부터 현재 구성된 요구사항 모델들을 통합하는 통합 모델과 이에 상응하는 코드 정보(330)를 얻게 된다.Continuing with reference to Figure 3, the user modifies the requirements model by modifying the corresponding component. By repeating this process, if the user no longer constructs the requirements model and the programming machine does not identify any inconsistent elements, the user obtains from the programming machine an integrated model that integrates the currently constructed requirements models and corresponding code information (330).
요구사항 모델의 구성방법을 통한 프로그램 완성을 설명하면 다음과 같다.The program completion through the method of configuring the requirements model is explained as follows.
요구사항 모델을 구성하고 통합, 검증하는 과정은 요구사항 모델을 거시적으로 스케치하는 것에서부터 상세하게 구성을 완성할 때까지 반복해서 수행된다. 이는 일반적인 프로그램을 구성하는 방법과 같다. 다만 본 발명의 일실시예에서는 사용자가 단편적인 논리를 기반으로 요구사항 모델을 구성하면, 통합, 검증, 코드의 생성을 프로그래밍 기계가 수행한다는 점에서 구분된다. The process of configuring, integrating, and verifying a requirements model is performed repeatedly from sketching the requirements model in a macroscopic manner until the detailed configuration is completed. This is similar to the method of configuring a general program. However, in one embodiment of the present invention, it is distinguished in that when a user configures a requirements model based on fragmentary logic, a programming machine performs integration, verification, and code generation.
이렇게 사용자가 요구사항 모델을 자동 프로그래밍 기계와 반복 수행하여 코드의 구조를 완성하면, 남은 작업은 최하단의 구성요소에 내용을 삽입하는 것이다. 내용은 요구사항 모델의 멤버에 포함된다. 내용의 구성에 의해서 사용자가 원하는 요구사항 모델의 목적이 변경될 수도 있기 때문에 내용은 사용자가 제공하는 요구사항에 해당되는 것이다. 내용을 수학적으로 구성하는 방법은 요구사항 모델의 수학식 모델의 추가적인 멤버로 구성하는 것이다(요구사항 모델의 수학식 모델은 이후에 정의된다). 수학식 모델은 집합으로 구성되므로 구성요소의 마지막 멤버로 내용의 추가가 가능하다. 내용은 아래의 예시와 같이 단일문장의 종류와 다양한 코드 표현 또는 데이터 값으로 구성할 수 있다. 예를 들면,In this way, when the user repeatedly executes the requirements model with an automatic programming machine to complete the structure of the code, the remaining task is to insert content into the lowest component. The 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 mathematically compose the content is to compose 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, it is possible to add content as the last member of the component. The content can be composed of a single sentence type and various code expressions or data values, as 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 는 단어의 조합 }Here, kind of statement ∈ K = { x | x is the kind of sentence in C code}, String = { x | x is a combination of words}
상기와 같은 방법으로 모든 단일문장은 각각 종류별로 수학적으로 표현하는 것이 가능하다. 예를 들어, 데이터의 할당은 (data 이름, 값), printf 문에서 변수에 의한 값의 삽입은 (data 이름, 값이 표현되어야 하는 위치) 등 이다.In the above way, each single sentence can be mathematically expressed by type. For example, data assignment is (data name, value), insertion of value by variable in printf statement is (data name, position where value should be expressed), etc.
이것이 텍스트 기반의 프로그래밍이면 매우 번거로울 수 있지만, 그래픽 기반에서 내용이 추가될 위치에서 종류를 선택하고, 입력할 값을 넣는 것은 그렇게 번거롭지만은 않을 수 있다. 음성을 이용하는 경우에도 마찬가지다. 그리고, 내용이 단일문장이 아닌 재사용하고자 하는 조각코드로 구성되는 경우에는 해당 조각코드에 이름을 명명하여 (조각코드 형식, 이름)을 멤버로 구성하면, 수학적으로 표현할 수 있다. 요구사항 모델의 통합을 통한 코드를 생성할 때도 해당 이름의 위치에 조각 코드를 삽입하면 된다.If this is text-based programming, it can be very cumbersome, but in a graphical environment, selecting the type where the content will be added and entering the value may not be so cumbersome. The same applies to using voice. And, if the content is not a single sentence but consists of a piece of code that you want to reuse, you can express it mathematically by naming the piece of code and configuring (piece code format, name) as a member. When generating code through the integration of the requirements model, you can insert the piece of code in the position of the name.
이를 통해 본 발명의 일실시예에서 내용에 대한 코드가 수학적으로 표현될 수 있다.Through this, the code for the content in one embodiment of the present invention can be mathematically expressed.
도 4는 본 발명의 일실시예에 따른 요구사항 모델을 통한 프로그래밍 과정을 보여주는 흐름도이다. 도 4를 참조하면, 먼저 요구사항 모델의 구조를 위해 사용자에 의해 생성되는 명령은 입력부(110)에 입력 정보로 변환되며, 이 입력 정보에 따라 요구사항 모델의 구조 정의 및 내용 구성이 이루어진다(단계 S410,S420).Figure 4 is a flow chart showing a programming process using a requirements model according to one embodiment of the present invention. Referring to Figure 4, first, a command created by a user for the structure of a requirements model is converted into input information in an input unit (110), and the structure definition and content composition of the requirements model are performed according to this input information (steps S410 and S420).
이후, 연산부(120)는 요구사항 모델들의 구조를 통합하고, 요구사항 모델간 구성요소를 식별하여 불일치 구성요소가 있는지를 확인한다(단계 S440,S450).Thereafter, the operation unit (120) integrates the structure of requirement models and identifies components between requirement models to check whether there are any inconsistent components (steps S440 and S450).
단계 S450에서, 확인결과, 불일치 구성요소가 있으면, 연산부(120)는 불일치 구성요소를 전시부(130)에 안내 정보로 디스플레이한다(단계 S451).In step S450, if there is a mismatched component as a result of the verification, the operation 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). Thereafter, steps S420 to S450 are performed.
이와 달리, 단계 S450에서, 확인결과, 불일치 구성요소가 없으면, 연산부(120)는 요구사항 모델들의 구조를 통합하여 코드 정보를 생성한다(단계 S460). 즉, 자동 프로그래밍이 이루어진다.In contrast, in step S450, if the verification result shows that there are no inconsistent components, the operation unit (120) integrates the structure of the requirement models to generate code information (step S460). That is, automatic programming is performed.
도 5는 본 발명의 일실시예에 따른 코드의 예시이다. 특히, 도 5는 C-언어로 작성된 코드의 예시이며, 도 5는 "Seamark"라는 프로그램의 다양한 모드를 나타낸다. 도 5를 참조하면, 각 모드 간(Repair Mode, Normal Mode, Tactical Mode, Part Training Mode, All Training Mode, Replay Mode 등)의 관계는 구조에 의해서 논리적으로 구조화되어 있다. 모드에서 수행되어야 할 내용은 단일문장 또는 조각 코드로 구성될 수 있고 최하단의 중괄호에 위치한다. 물론, 요구사항 모델을 추가 구성하여 각 모드에 대한 구조를 상세화하여 구성할 수도 있다.FIG. 5 is an example of code according to an embodiment of the present invention. In particular, FIG. 5 is an example of code written in the C language, and FIG. 5 shows various modes of a program called "Seamark." Referring to FIG. 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 be composed of a single sentence or a piece of code and is located in the curly brackets at the bottom. Of course, the structure for each mode can be configured in detail by additionally configuring a requirements model.
여기서 최하단의 중괄호는 중괄호 안에 더 이상 중괄호가 존재하지 않는 중괄호를 의미한다. 만약 요구사항 모델 구조의 중간에, 즉 최하단 구성요소가 아닌 위치에 단일문장이 존재한다면, 앞서 설명한 수학적인 논리 구성을 위한 중괄호가 해당 단일문장 앞뒤에 추가될 수 있다. 이는 그 위치에서 순차논리의 구성요소가 추가 구성되고, 즉 중괄호만으로 구성된 논리가 구성되고, 그 내부에 단일문장이 위치하게 됨을 의미한다. 이 역시 최하단의 위치에 단일문장이 위치하는 것과 동일한 의미가 된다. 그러므로 요구사항 모델의 구조가 아닌 내용(단일문장이나 조각 코드)은 항상 최하단 구성요소에 위치하는 것이 일반화된 프로그래밍의 특성이라 할 수 있다.Here, the curly bracket at the bottom means a curly bracket that has no more curly brackets inside it. If there is a single sentence in the middle of the requirements model structure, that is, in a position other than the lowest component, the curly brackets for the mathematical logic structure described above can be added before and after the single sentence. This means that a sequential logic component is additionally configured at that position, that is, a logic composed only of curly brackets is configured, and a single sentence is located inside it. This also has the same meaning as a single sentence being located at the lowest position. Therefore, it can be said that it is a general programming characteristic that the content (single sentences or code fragments) other than 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 are needed along with logical operators to express the structure. Since propositions are composed of data, the use of data in the code must also be included in the category of structure. The value of the data is unnecessary here. This is because the value of the data is not used since it is structuring logic.
코드를 구조화하는 관점에서, 정확하게는 데이터의 선언 문장은 구조이고, 데이터에 값을 할당하는 것은 내용으로 구분된다. 선언 문장은 char OperatorRole, RNMode, char ActiveMode, SecurityValidity 등이 되고, 여기서, char는 문자열을 나타낸다. 도 5에서 OperatorRole==0, OperatorRole==2, 등은 값의 할당이 아닌 옳고 그름을 판단하는 명제이다.From the perspective of structuring code, the declaration statement of data is precisely the structure, and assigning values to data is distinguished as the content. The declaration statement is char OperatorRole, RNMode, char ActiveMode, SecurityValidity, etc., where char represents a string. In Fig. 5, OperatorRole==0, OperatorRole==2, etc. are propositions that determine right or wrong, not assignments of values.
프로그래밍은 수행해야할 목적에 대한 내용을 논리화하여 코드로 표현한 것이다. 즉, 목적은 여러 개의 요구사항 모델로 구성되고, 이 요구사항 모델들을 논리적으로 구조화하여 통합하는 것이 프로그래밍이다. 앞서 설명한 것들을 바탕으로 프로그래밍을 수행한다는 것은 특정한 목적과 관계된 내용들을 앞서 설명한 논리구조로 구조화하고, 더 이상 쪼개질 수 없는 의미를 내용으로 채워 넣는 것이다.Programming is the logical expression of the content of the purpose to be performed and expressed in code. In other words, the purpose is composed of several requirement models, and programming is the logical structure and integration of these requirement models. Based on what has been explained above, performing programming means structuring the content related to a specific purpose into the logical structure explained above, and filling it with meaning that cannot be divided any further.
자동 프로그래밍 개념은 요구사항의 정의와 프로그래밍의 정의에서 출발된다. 사용자가 프로그래밍 기계에게 제공해야 하는 요구사항은 어떻게 구성되고 프로그래밍 기계는 자동으로 어떤 역할을 수행해야 하는가가 본 발명의 주요 개념이다.The concept of automatic programming starts from the definition of requirements and the definition of programming. The main concept of the present invention is how the requirements that a user must provide to a programming machine are structured and what role the programming machine must automatically perform.
요구사항이 자연어로 구성되는 것은 매우 모호하므로, 상기에서 사용한 논리인 순차, 선택, 반복의 논리를 이용하여 내용들을 구조화하여 단편적인 요구사항들을 구성한다고 하면, 프로그래밍 기계의 역할은 이 요구사항의 조각들을 올바르게 통합하여 코드를 생산하는 것이고, 이 과정에서 요구사항 모델 간의 불일치와 코드의 문법적인 오류를 검출하는 것이 프로그래밍 기계의 역할이 된다. Since requirements are very vague when composed in natural language, if we structure the contents and compose fragmentary requirements using the logic of sequence, selection, and repetition used above, the role of the programming machine is to correctly integrate these pieces of requirements and produce code, and in this process, the role of the programming machine is to detect inconsistencies between requirement models and grammatical errors in the code.
기계가 요구사항의 옳고 그름은 판단할 수는 없다. 그것은 사용자가 정의하는 것이기 때문이다. 다만 사용자가 정의한 요구사항 간의 불일치로 인한 오류는 검출할 수 있다. 하지만 이중 어떤 요구사항이 옳은지도 기계는 판단하지 못한다.Machines cannot judge whether requirements are right or wrong, because that is what users define. However, they can detect errors caused by inconsistencies between requirements defined by users. However, machines cannot judge which of these requirements is right.
이것 역시 사용자의 정의에 의해서 판단되기 때문이다. 그러므로 오류를 수정하는 것은 요구사항을 정의하는 것과 같다. 그러므로 본 발명의 일실시예에서 자동으로 프로그래밍을 수행하는 프로그래밍 기계는 요구사항 모델을 통합하고, 통합된 요구사항 모델에 대해서 통합 코드를 생산하고, 통합 코드의 오류와 요구사항 간의 불일치를 검출하는 기능을 수행한다. This is also because it is judged 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 integrates a requirements model, produces integrated code for the integrated requirements model, and performs the function of detecting errors in the integrated code and inconsistencies between requirements.
사용자는 요구사항을 구성하고, 요구사항의 문법적 오류 및 요구사항 간의 불일치가 도출되면 이를 수정한다. 즉, 사용자의 역할은 올바른 요구사항을 구성하는 것이다. 그리고 사용자가 정의하는 요구사항은 이후에서 보다 상세하게 정의되는 수학적인 논리로 표현된다.The user constructs requirements and corrects them if grammatical errors or inconsistencies between requirements are found. In other words, the role of the user is to construct correct requirements. And the requirements defined by the user are expressed in mathematical logic, which will be defined in more detail later.
도 6은 본 발명의 일실시예에 따른 논리 연산자를 생략한 상태의 블록 간의 위치관계를 표현한 예시이다. 도 6을 참조하면, 프로그램의 구조를 논리적으로 알고리즘화하기 위해서는 구조를 구성하는 구성요소 간의 관계가 설정되어야 한다. 이러한 관계를 표현하기 위해서 구성요소 간의 순차 및 계층관계를 중첩 순서쌍(Nested ordered pair)을 사용하여 표현한다. 단, 이 표현에서 괄호는 생략되었다. 왜냐하면 여러 개의 구성요소를 표현하다 보면 괄호의 개수가 너무 많아지게 되어 표현의 가시성이 저하되기 때문이다.FIG. 6 is an example of expressing the positional relationship between blocks in a state where logical operators are 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. In order to express this relationship, the sequential and hierarchical relationship between the components is expressed using a nested ordered pair. However, parentheses are omitted in this expression. This is because when expressing multiple components, the number of parentheses becomes too large, which reduces the visibility of the expression.
도 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 positional relationship (620) corresponding to the example of code information (610) expressed on the left side. The top-level component (623) is (1), the bottom-level component (621) is (1,2,2), and the next-level component (622) of the bottom-level component (621) is (1,2). Both (1) and (1,2) are upper-level components of (1,2,2). (1,2,1) is sequentially ahead of (1,2,2), and the next-level component (1,2) is the same. The sequential positional relationship is below the same next-level component. Therefore, (1,1,1) and (1,2,1) are not sequential positional relationships.
부연하면, 각 구성요소는 가장 아래 계층의 최하위 구성요소, 상기 구성요소의 인접한 상위에 놓이는 차상위 구성요소, 차상위 구성요소를 포함한 상위에 놓이는 상위 구성요소, 임의의 구성요소의 인접한 하위에 놓이는 차하위 구성요소, 차하위 구성요소를 포함하여 하위에 놓이는 하위 구성요소, 상기 각 구성요소의 가장 상위에 놓이는 최상위 구성요소, 상기 각 구성요소의 가장 하위에 놓이는 최하위 구성요소로, 구성요소 간의 계층적인 관계를 구분한다.In detail, each component is divided into a lowest component of the lowest hierarchy, a sub-higher component located adjacent to the component, a higher component located above including the sub-higher component, a sub-lower component located adjacent to any component, a lower component located below including the sub-lower component, a top component located above each of the components, and a lowest component located below each of the components, thereby distinguishing the hierarchical relationship between the components.
도 7은 본 발명의 일실시예에 따른 구성요소의 이름과 위치관계를 이용하여 각 구성요소에 고유의 이름을 명명한 요구사항 모델의 예시이다. 즉, 요구사항 모델은 이름과 위치관계만으로도 표현이 가능하다. 모든 요구사항 모델은 올바르기만 하다면 단편적으로 구성이 가능하다. 왜냐하면 요구사항 모델을 통합하는 알고리즘이 존재하기 때문이다. 그러므로 사용자는 다양한 관점에서 요구사항 모델을 구성하여 관리할 수 있다. 도 7을 참조하면, "Seamark"(720) 프로그램은 Repair Mode(711)와 Normal Mode(712)로 구성된다. Fig. 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 one embodiment of the present invention. In other words, a requirements model can be expressed using only the names and positional relationships. All requirements models can be constructed piecemeal as long as they are correct. This is because there is an algorithm for integrating requirements models. Therefore, a user can construct and manage requirements models from various perspectives. Referring to Fig. 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)"로 구성되어 있다. 코드 상에서 모든 구성요소는 그 고유의 역할이 있다. 때문에 그 역할에 대해서 고유의 이름을 명명할 수 있다. 이렇게 이름을 통해서 코드의 구조를 논리화 하는 것은 해당 영역에 정의되는 행위를 기호화 하는 의미를 갖는다. 즉, 행위에 대한 수학적 기호를 할당하는 것이다. 본 발명에서 프로그램은 계층적 순차적 기호를 구조화 하여 표현된다. 행위에 대한 기호인 이름은 각 요구사항 모델 간의 동일한 구성요소를 구분하게 하는 고유의 식별자로 사용된다. Fig. 8 is an example of a requirements model that embodies the sub-components of the "Normal Mode (712)" illustrated in Fig. 7. That is, it is an example of a requirements model for explaining the concepts of definition and integration of requirements models together with Fig. 7. Referring to Fig. 8, "Normal Mode (712)" is composed of "Tactical Mode" (810), "Part Training Mode" (820), "All Training Mode (830)", and "Replay Mode (840)". Every component in the code has its own role. Therefore, a unique name can be named for that role. Logicalizing the structure of the code through the name in this way has the meaning of symbolizing the behavior defined in the corresponding area. That is, it is assigning a mathematical symbol for the behavior. In the present invention, a program is expressed by structuring hierarchical sequential symbols. The name, which is a symbol for the behavior, is used as a unique identifier that distinguishes the same component between each requirements model.
완성된 프로그램의 관점에서 살펴보면 그 개념이 더욱 명확해 진다. 임의의 완성된 프로그램이 있고, 그 프로그램의 각 블록에 의미있는 이름을 부여한다고 가정하자. 그러면 그 프로그램은 이름으로 구조화된 형상이 된다. 그 프로그램에서 수행되는 특정 기능이 있다고 했을 때, 그 프로그램에서 그 기능은 해당되는 블록의 이름을 조합해서 구성된다고 언급할 수 있다. 다른 표현으로는 그 기능이 어떤 이름의 블록들을 순차적으로 수행하는 것으로 실행된다고 이야기 할 수도 있다. 이것은 그 기능관점에서 하나의 모델 구성이고, 이러한 모델을 본 발명에서는 요구사항 모델로 명명하였다. 이는 특정 관점에서 수행되는 기능이고, 프로그래머가 알고 있는 단편적인 지식인 셈이다. 이러한 단편적인 기능을 통합하고 검증하여 자동으로 코드를 생성하는 것이 본 발명의 주요한 개념이다.The concept becomes clearer when viewed from the perspective of a completed program. Let us assume that there is a completed program and that each block of the program is given a meaningful name. Then, the program becomes a structured shape with names. When there is a specific function performed in the program, it can be said that the function is composed by combining the names of the corresponding blocks in the program. In other words, it can be said that the function is executed by sequentially performing blocks with certain names. This is a model composition from the perspective of the function, and this model is called a requirements model in the present invention. This is a function performed from a specific perspective and is fragmentary knowledge known to the programmer. The main concept of the present invention is to integrate and verify these fragmentary functions and automatically generate code.
도 7 및 도 8에서 두개의 요구사항 모델이 있는데, 이들은 어떻게 통합될지는 쉽게 유추가 가능하다. 동일한 이름의 구성요소인 "Seamark"(720)와 "Normal Mode(712)"를 중심으로 차상위관계 및 순차관계의 구성요소들을 점진적으로 연결하면 된다. 이것이 위치관계와 이름을 이용하여 모델의 구조를 통합하는 개념이다.There are two requirement models in Fig. 7 and Fig. 8, and it is easy to infer how they will be integrated. The components with the same name, "Seamark" (720) and "Normal Mode (712)", are gradually connected with the components of the subordinate relationship and the sequential relationship. This is the concept of integrating the structure of the model using the positional relationship and name.
각 구성요소들은 위치관계에 의해서 관계화되었지만, 이 위치에 고유의 이름을 할당하는 것은 의미를 갖는 단편적인 프로그램의 구조를 구성하는 것이다. 이러한 요구사항 구성 방법을 이용하여 자동 프로그래밍을 수행한다는 것이 본 발명의 주요 아이디어 이다. 앞서 설명한 바와 같이 구성요소는 이름과 위치, 논리연산자, 명제, 그리고 데이터의 선언 및 사용으로 구성된다. 또한, 구성요소는 수학적으로 표현될 수 있다. 즉, 수학식으로 표현될 수 있다. 이를 예시하면 다음과 같다.Although each component is related by a positional relationship, assigning a unique name to this position constitutes a structure of a fragmentary program that has meaning. The main idea of the present invention is to perform automatic programming using this method of configuring requirements. As explained above, the component is composed of a name, a position, a logical operator, a proposition, and the declaration and use of data. In addition, the component can be expressed mathematically. That is, it can be expressed as a mathematical formula. 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 n k ), t, c, D c , D d , D a )}
여기서. Here.
name ∈ S, S = {x | x is natural words}, {name} ≠ Ф 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 mathematical model above, it means that the requirements model (M) described above can be expressed as a set consisting of components (e). Each component has a unique name (name), a position indicating the relationship between components (i.e., position relationship), and also includes types of logical operators (t) such as while, if, and none, and propositions (c).
구성요소에서 사용되는 데이터도 표현되는데, 해당 구성요소에서 시작되는 데이터를 의미하는 선언 데이터 집합(Dd)이 있고, 상위 구성요소에서 선언(출발)되었지만 현재 구성요소에서 사용하는 접근 데이터 집합(Da), 차상위 구성요소에서 사용되는 데이터 중 현재 구성요소의 명제에서 사용되는 조건 데이터 집합(Dc)이 있다. 구성요소에서 위치와 이름으로 요구사항 모델의 구조를 형상화하고, 각 구성요소 간의 논리 관계 표현을 위한 논리 연산자의 종류 및 명제가 있고, 구성요소 간의 데이터 사용을 표현하기 위한 선언/접근/조건 데이터가 있다고 보면 된다. 이렇게 구성요소를 구성하고 있는 요소를 멤버로 정의한다.The data used in the component is also expressed, and there is a declaration data set (D d ) meaning the data starting from the component, an access data set (D a ) declared (starting) in the upper component but used in the current component, and a condition data set (D c ) used in the proposition of the current component among the data used in the next-level component. It can be seen that the structure of the requirements model is visualized in the component with the location and name, there are types of logical operators and propositions for expressing the logical relationship between each component, and there is declaration/access/condition data for expressing the use of data between components. The elements that make up the component are defined as members in this way.
수학식 모델은 요구사항 모델의 자동 통합 및 검증을 위해서 도입되었다. 코드를 구성하는 구조와 내용 중, 상기의 수학식 모델은 구조만을 표현하고 있다. 앞서 설명한 바와 같이 단일문장과 조각코드의 수학적인 표현은 상기 수학식 모델 집합의 가장 오른쪽 멤버로 추가가 가능하다. 그러므로 모든 요구사항 모델 즉, 구조와 내용은 수학적으로 표현이 가능한 것이다.The mathematical model was introduced for automatic integration and verification of the requirements model. Among the structures and contents that constitute the code, the mathematical model above expresses only the structure. As explained above, the mathematical expressions of single sentences and fragments of code can be added as the rightmost member of the mathematical model set. Therefore, all requirements models, that is, structures and contents, can be expressed mathematically.
한편, 구성요소의 멤버와 코드와의 대응 관계를 보면 다음표와 같다.Meanwhile, the corresponding relationship between the members of the component and the code is as shown in the table below.
Sequence/ Selection/ Loopt
Sequence/ Selection/ Loop
None/ If/ WhileLogical operators below
None/ If/ While
표 1 은 상기에서 정의한 수학식 모델과 그와 대응되는 C code 를 목록화한 것이다. 코드의 구조로 표현되는 요구사항 모델이 C code 의 어느 부분과 대응되는지 기술한 것이다. 이는 요구사항 모델이 구성되면, 자동으로 그에 상응하는 코드가 구성될 수 있음을 의미한다. 물론 이를 위해서는 룩업테이블이 구성될 수 있다.Table 1 lists the mathematical models defined above and their corresponding C codes. It describes which part of the C code corresponds to the requirements model expressed in the structure of the code. This means that when the requirements model is constructed, the corresponding code can be constructed automatically. Of course, a lookup table can be constructed for this purpose.
예를들어 도 7 및 도 8과 같은 요구사항 모델이 존재한다면, 각 위치에 중괄호를 위치시키고, 중괄호 상단에 도 5와 같이 주석으로 이름을 기술하고, 중괄호 앞에 논리 연산자를 위치하고, 그 다음에 괄호와 함께 명제를 기술한다. 그리고 중괄호의 내부에 선언 데이터 집합의 구성요소들을 선언하는 문장들로 기술하면 된다. 이것이 요구사항 모델의 구조를 자동으로 코딩하는 방법이다. 여기에 최하단 구성요소에 단일문장이나 조각코드가 내용으로 있다면, 해당 위치에 해당 내용을 삽입하면 코드가 완성된다.For example, if there is a requirement model such as Fig. 7 and Fig. 8, place curly brackets at each location, describe the name as a comment on top of the curly brackets as in Fig. 5, place a logical operator in front of the curly brackets, and then describe the proposition with parentheses. Then, describe the components of the declaration data set as sentences inside the curly brackets. This is a method to automatically code the structure of the requirement model. If the bottom component contains a single sentence or a piece of code, 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 구성요소는 공통된 인자이다. 이를 중심으로 두 모델을 통합하는 것은 하나의 모델에 다른 모델의 구성요소를 삽입하는 것과 같다. All logical thinking methods are the same, but in the requirements model, the integration is centered on common factors. In Fig. 7 and Fig. 8, there are two requirements models. The common components are "Seamark" and "Normal Mode". Therefore, integration is possible centered on common factors. Specifically, the method of integrating models is to maintain the shape of each requirements model to be topologically identical. This is the same concept as the method of integrating codes in general. If the relationship between the components that make up the integrated requirements model is maintained identically for the two requirements before integration, the integrated requirements can correctly reflect the meaning of each requirement. This is explained based on the mathematical model as follows. In Fig. 7 and Fig. 8, the Seamark component and the Normal Mode component are common factors. Integrating the two models centered on this is the same as inserting the components of another model into one model.
사용자가 요구사항을 정의할 때의 의도는 Normal Mode 아래에 네 가지 모드를 구성하는 것이므로 도 7의 Normal Mode 아래에 도 8의 네 가지 모드를 구성하면 된다. 이를 논리 관계로 표현하면, 도 7의 모델에서 도 8의 모델의 구성요소 중 동일한 구성요소를 중심으로 차상위 및 차하위 관계에 있는 동일하지 않은 구성요소를 삽입하고, 삽입된 구성요소와 순차관계에 있는 구성요소를 삽입하고, 또 그 구성요소와 계층관계인 구성요소를 삽입하는 식으로 반복하는 것이 두 모델을 통합하는 방법이다. When a user defines requirements, the intention is to configure four modes under Normal Mode, so the four modes of Fig. 8 can be configured under Normal Mode of Fig. 7. If this is expressed in a logical relationship, the method for integrating the two models is to repeatedly insert non-identical components in a subordinate and subordinate relationship centered on the same components among the components of the model of Fig. 8 in the model of Fig. 7, insert components in a sequential relationship with the inserted components, and then insert components in 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, the position (1,3,4) expressed as a nested ordered pair has the position of the next higher-order component as (1,3), and is in a sequential relationship with (1,3,1), (1,3,2), (1,3,3), etc. As another example, the next higher-order component of the position (1,6,7,3) is (1,6,7) and the next lower-order component is (1,6,7,3,1). In other words, the position and number of the nested ordered pair expressing the position include the positions of all higher-order components. This is because the positions of the higher-order components in the above example are (1), (1,6), (1,6,7). In other words, the hierarchical sequential positional relationship between the components of the requirements model can be known through the position expression. Therefore, in the above integration method, by sequentially inserting the subordinate, subordinate, and sequential relationships centered on the components with the same name in one requirements model to the other requirements model, integration of all components of the two models is possible.
두 모델을 통합하는 방법은 여러 모델을 두 개씩 순차적으로 통합하는 방법을 제공하는 것과 동일하다. 이를 통해서 모든 요구사항 모델은 위치관계를 통한 통합이 가능하다.The method of integrating two models is the same as providing a method of integrating multiple models sequentially two by two. Through this, all requirements models can be integrated through positional relationships.
요구사항 모델이 코드와 일대일로 대응되므로, 각 요구사항 모델을 통합하는 것은 두 코드를 통합하는 것이고, 두 요구사항 모델의 형상이 각각 동일하게 통합되면 사용자가 의도한 두 코드를 통합하여 전체 코드를 구성하는데 의미의 왜곡이 없음을 의미한다. 때문에, 도 7 및 도 8에서 2 개의 모델은 동일한 이름을 중심으로 통합될 수 있다.Since the requirements model corresponds one-to-one with the code, integrating each requirements model means integrating two codes, and if the shapes of the two requirements models are integrated identically, it means that there is no distortion of meaning when integrating the two codes intended by the user to configure the entire code. Therefore, the two models in Figs. 7 and 8 can be integrated around the same name.
상기에서 정의한 수학식 모델을 이용하여 보다 구체적으로 설명하면, 앞서 설명한 바와 같이 위치와 이름은 동일한 이름의 구성요소를 중심으로 통합이 가능하고, 논리 연산자, 명제, 데이터와 같은 구성요소의 멤버들은 동일한 이름의 구성요소에 대해서만 통합되고 동일한 이름이 존재하지 않는 구성요소들은 그대로 두면 된다.To explain more specifically using the mathematical model defined above, as explained above, location and name can be integrated centered on components with the same name, and members of components such as logical operators, propositions, and data can be integrated only for components with the same name, 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 Figs. 7 and 8, "Normal Mode" requires integration between members, but "Repair Mode" and "Tactical Mode" do not have identical components, so there is no target for integration. Integration of identical components is performed for each member. Since the requirements model is a structured model that symbolizes the behavior that each block means, and each requirements model expresses fragmentary knowledge, the members belonging to the same behavior, that is, the components with the same name, may be expressed with different meanings. From the perspective of the program to be completed, the members of the same behavior, that is, the members of the same component, must be expressed by integrating them with the members of various requirements models that are expressed fragmentarily. Naturally, if there is no component with the same name, the members of that component have no target for integration.
논리 연산자의 통합은 순차/선택/반복의 논리가 포함관계에 있으므로, 선택과 순차는 선택으로 선택과 반복은 반복으로 결정하면 된다. 명제는 모든 명제가 만족되어야 하므로 AND 논리로 통합되고, 데이터는 모든 구성요소에서 사용되어야 하므로 합집합으로 구성된다. 상기와 같이 동일한 구성요소에 대해서 멤버간의 통합하는 규칙을 수학적으로 표현하면 아래와 같다.The integration of logical operators is related to the logic of sequence/selection/repetition, so selection and sequence can be determined as selection, and selection and repetition can be determined as repetition. Since all propositions must be satisfied, propositions are integrated with AND logic, and since data must be used in all components, they are composed of a union. As above, the rule for integrating members for the same components is expressed mathematically as follows.
- (정의) 동일한 구성요소간의 통합 방법- (Definition) Method of integration between identical components
임의의 구성요소 ealpha에 대해서 동일한 이름의 구성요소 e1alpha 와 e2alpha 를 통합한다.For any component e alpha , unify components e 1alpha and e 2alpha of the same name.
여기서 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 .
논리 연산자 통합 Integration of logical operators
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.
임의의 통합된 모델이 존재한다고 할 때, 그 모델에 대한 검증은 문법적으로 오류가 없는지, 사용자가 정의한 각 요구사항 모델이 올바르게 통합되었는지를 확인하는 것이다. 즉, 요구사항 모델이 문법적으로 올바르게 구성되었고, 각 요구사항 모델의 의미가 유지되도록 통합되었는지만 확인하면 된다.Given an arbitrary integrated model, verification of the model is to check whether it is grammatically correct and whether each user-defined requirement model is correctly integrated. In other words, it is only necessary to check whether the requirement model is grammatically correct and whether the integration preserves the meaning of each requirement model.
문법적인 검증은 요구사항 모델에 대한 수학식 모델로 확인이 가능하다. 문법적인 검증은 각 구성요소의 올바른 구성과 구성요소 간의 문법적 오류를 검출하는 것으로 구분된다. 수학식 모델에서 정의된 형식으로 각 구성요소의 멤버가 정의되었는지를 확인하면 각 구성요소의 검증은 완료된다. 이는 구성요소의 멤버 구성이 정의에 일치되는지 확인하는 것이다. Grammatical verification can be verified by a mathematical model of the requirements model. Grammatical verification is divided into the correct composition of each component and the detection of grammatical errors between components. Verification of each component is completed when it is confirmed that the members of each component are defined in the format defined in the mathematical model. This is to confirm whether the member composition of the component matches the definition.
구성요소 간의 문법적 오류는 사용자가 요구사항 모델을 정의할 때 범하게 되는 문법적 상충을 검출하는 것이다. 구성요소는 이름, 위치, 논리연산자, 명제, 선언/ 접근/ 조건 데이터로 구성되어 있으므로, 각 멤버 별로 구성요소 간의 상충여부만 확인하면 된다. 왜냐하면, 다른 종류의 멤버 간에는 상충이 존재하지 않기 때문이다. 즉, 위치에 대한 이름의 상충 여부는 존재하지 않는다. A 위치에서 B 이름을 사용한다고 해서, 문법적으로 오류를 유발하지 않는다는 의미이다. 다른 종류의 멤버들도 마찬가지다. Grammatical errors between components are to detect grammatical conflicts that users commit when defining a requirements model. Since components consist of names, locations, logical operators, propositions, and declaration/access/condition data, you only need to check for conflicts between components for each member. This is because there are no conflicts between different types of members. In other words, there is no conflict in names for locations. This means that using name B in location A does not cause a grammatical error. The same goes for other types of members.
그러므로 하나의 요구사항 모델에서 구성요소 간의 상충은 각 멤버별로 확인된다. 이름은 프로그래밍을 수행하는 과정에서 고유한 식별자이므로, 하나의 모델에서 동일한 이름의 구성요소가 존재해서는 안된다. 위치는 요구사항 모델에서 구성요소 간의 관계에 의해서 자동으로 할당되는 값이므로 사용자가 오류를 범할 가능성은 없다. 사용자가 직접할당하지 않기 때문이다. 혹시 사용자가 임의로 위치 값을 변경하는 경우에는 최상위 구성요소 (1)에서부터 순차적으로 위치값을 할당하여 사용자가 임의로 할당한 값과 비교할 수 있다. Therefore, in a requirement model, conflicts between components are checked for each member. Since the name is a unique identifier in the process of performing programming, components with the same name should not exist in a model. Since the location is a value automatically assigned by the relationship between components in the requirement model, there is no possibility of user error. This is because the user does not directly assign it. If the user arbitrarily changes the location value, the location value can be assigned sequentially from the top component (1) and compared with the value arbitrarily assigned by the user.
논리 연산자 및 조건 명제는 구성요소 간의 상충 요소가 존재하지 않는다. 선언데이터는 데이터의 출발점을 의미하므로 해당 구성요소보다 상위 구성요소에서 동일한 이름의 선언 데이터가 존재해서는 안된다. 접근 데이터는 상위 구성요소에서 선언한 데이터를 사용한다는 의미이므로 상위 구성요소에 선언 데이터가 존재해야 한다. 조건 데이터는 차상위 구성요소의 데이터를 명제에서 사용한다는 의미이므로 차상위 구성요소의 선언 및 접근 데이터에 조건 데이터가 포함되어야 한다. Logical operators and conditional propositions do not have conflicting elements between components. Declaration data means the starting point of data, so declaration data with the same name should not exist in the higher-level component than the corresponding component. Access data means that the data declared in the higher-level component is used, so declaration data must exist in the higher-level component. Conditional data means that the data of the lower-level component is used in the proposition, so the declaration and access data of the lower-level component must include conditional data.
상기는 하나의 요구사항 모델에 대한 구성요소 간의 멤버 상충 요소들이다. 문법 검증은 요구사항 모델의 통합 이후에도 수행되어야 한다. 왜냐하면, 요구사항 모델의 데이터 사용은 하나의 모델 구성 관점에서 출발과 사용을 정의하고 있기 때문에, 모델의 범위가 넓어지면 데이터의 사용도 새롭게 정의되어야 하기 때문이다.The above are the member conflicts between the components for a single requirement model. The grammar verification should be performed even after the integration of the requirement model. This is because the data usage of the requirement model is defined from the perspective of a single model composition, so the data usage should be redefined as the scope of the model expands.
요구사항 모델의 구성은 사용자의 의도를 나타내므로, 통합된 요구사항 모델에 대한 검증은 각 요구사항 모델이 통합모델에 원래의 의미대로 반영되었음을 확인하는 것이다. 모델은 수학식 모델에 의해서 위치, 이름, 논리연산자, 명제, 데이터로 구성되어 있으므로 각 멤버들이 올바르게 반영되었는지를 확인한다. 앞서 통합의 과정에서 설명한대로 각 요구사항 각각의 구성요소간의 위치 관계가 올바른지를 동일한 이름을 중심으로 확인이 가능하다. 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 according to its original meaning. Since the model is composed of location, name, logical operator, proposition, and data by the mathematical model, it is confirmed whether each member is reflected correctly. As explained in the integration process above, it is possible to confirm whether the location 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 expressed in Figs. 7 and 8 are maintained identically in the integrated model, the configuration of each requirement model in the integrated model is maintained identically, so it can be said that it is topologically correctly structured. If there is no component with the same name, integration is not possible and verification is unnecessary. This is because the absence of a component with the same name in the requirement model is equivalent to the absence of a method for integration. In this case, the requirement model should be structured in more detail so that the same name is configured.
위치와 이름을 통해서 도 7 및 도 8 에서 두 모델이 통합되는 것과 같이, 구성적으로 올바른지 검증되고 나면, 동일한 이름의 구성요소들은 앞서 정의한 통합 방법을 이용하여 논리연산자, 명제, 데이터가 올바르게 통합되었는지 검증할 수 있다.Once the two models are verified as being structurally correct, such as in Figures 7 and 8, through location and name, the components with the same name can be verified to have been correctly integrated using the integration method defined above, including logical operators, propositions, and data.
통합 모델에 대해 각 요구사항이 올바르게 통합되었는지를 수학식 모델을 통해서 설명하면 다음과 같다. 통합 모델은 각 요구사항 모델의 의미가 올바르게 통합되었으므로, 하나의 요구사항 모델을 구성하는 구성요소 간의 위치 관계가 유지되어야 한다. 다시 말해서, 하나의 요구사항 모델의 구성요소 간의 모든 차상위관계 및 순차관계가 통합 모델에서도 상위관계 및 순차관계로 유지되는지 확인되어야 한다. 통합 모델에서 각 구성요소의 이름은 고유한 식별자로 하나만 존재해야 한다. 이를 통해서 각 요구사항 모델의 위치와 이름이 올바르게 통합되었는지 검증이 가능하다. 나머지 멤버인 논리연산자와 조건, 데이터는 통합 모델의 동일한 이름의 구성요소에 각 요구사항 모델의 구성요소의 멤버가 포함되는지를 확인함으로써 검증이 수행된다. 이는 각 요구사항 모델의 의미가 통합모델에 올바르게 통합되었음을 수학적으로 검증하는 것이다.The mathematical model for explaining whether each requirement is correctly integrated for the integrated model is as follows. Since the integrated model correctly integrates the meaning of each requirement model, the positional relationship between the components that make up one requirement model must be maintained. In other words, it must be confirmed that all subordinate relationships and sequential relationships between the components of one requirement model are maintained as upper relationships and sequential relationships in the integrated model. The name of each component in the integrated model must exist as a unique identifier only once. This enables verification that the location and name of each requirement model are correctly integrated. Verification is performed by checking whether the remaining members, which are logical operators, conditions, and data, include members of each requirement model in the components of the same name in the integrated model. This mathematically verifies that the meaning of each requirement model is correctly integrated into the integrated model.
한편, 자동 프로그램이 완성되면, 선언된 모든 데이터는 수학식 모델을 통해 관리가 가능하다. 앞서 정의한 수학식 모델에서 사용되는 모든 데이터는 하나의 집합으로 통합하여 구성할 수 있고, 최하단의 내용에 의해서 변경되는 데이터를 구분할 수 있다. 그러므로 통합 모델의 위치를 기반으로 변경되는 데이터를 순차적으로 구성하는 것도 가능하다. 그러므로 통합 모델, 즉 코드의 어떤 위치에서의 값도 분석이 가능한 것이다. 또한, 특정 데이터가 통합 모델에서 어떻게 변경되고 구성되어 있는지 여러 관점에서 재구성이 가능하다. 이는 수학적으로 프로그램의 모든 데이터 분석이 가능함을 의미한다.Meanwhile, when the automatic program is completed, all declared data can be managed through the mathematical model. All data used in the previously defined mathematical model can be integrated and organized into one set, and data that changes according to the content at the bottom can be distinguished. Therefore, it is also possible to sequentially organize 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. In addition, it is possible to reconstruct from various perspectives how specific data is changed and organized in the integrated model. This means that all data in the program can be analyzed mathematically.
또한, 여기에 개시된 실시형태들과 관련하여 설명된 방법 또는 알고리즘의 단계들은, 마이크로프로세서, 프로세서, CPU(Central Processing Unit) 등과 같은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 (명령) 코드, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. In addition, the steps of the method or algorithm described in connection with the embodiments disclosed herein may be implemented in the form of program instructions that can be executed by various computer means, such as a microprocessor, a processor, a CPU (Central Processing Unit), and the like, and recorded on a computer-readable medium. The computer-readable medium may include program (instruction) codes, data files, data structures, etc., alone or in combination.
상기 매체에 기록되는 프로그램 (명령) 코드는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프 등과 같은 자기 매체(magnetic media), CD-ROM, DVD, 블루레이 등과 같은 광기록 매체(optical media) 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 (명령) 코드를 저장하고 수행하도록 특별히 구성된 반도체 기억 소자가 포함될 수 있다. The program (command) code recorded on the above medium may be specially designed and configured for the present invention, or may be known and available to those skilled in the art of computer software. Examples of the computer-readable recording medium may include magnetic media such as hard disks, floppy disks, and magnetic tapes, optical media such as CD-ROMs, DVDs, and Blu-rays, and semiconductor memory devices specially configured to store and execute program (command) codes such as ROMs, RAMs, and flash memories.
여기서, 프로그램 (명령) 코드의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.Here, examples of program (instruction) code include not only machine language codes such as those generated by a compiler, but also high-level language codes that can be executed by a computer using an interpreter, etc. The above-mentioned hardware device can 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 section
120: Operation section
130: Exhibition Department
140: Storage
210: Model Structure Definition Module
220: Configuration Module
230: Structural Integration Module
240: Identification of mismatch elements module
250: Code generation module
Claims (18)
다수의 상기 요구사항 모델간의 불일치 구성요소가 있는지를 식별하여 불일치 구성요소가 없으면 다수의 상기 요구사항 모델을 통합하여 통합 모델을 생성하고 상기 통합 모델의 코드 정보를 생성하는 연산부(120); 및
상기 연산부(120)의 제어에 따라 상기 불일치 구성요소에 해당하는 다수의 상기 요구사항 모델에 대한 정보를 출력하는 전시부(130);를 포함하며,
상기 구조 정의(311)는 논리 연산자를 이용하여 정의되며,
다수의 상기 요구사항 모델은 프로그래밍을 자동으로 수행하기 위해 사용자가 제공해야 하는 요구사항이고,
다수의 상기 요구사항 모델의 최하단에는 내용(313)이 구성되며, 다수의 상기 요구사항 모델을 구성하는 구조와 내용(313)은 수학적으로 표현되고 코드와 대응되고,
상기 내용(313)은 단일문장 또는 조각 코드인 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
An input section (110) for receiving input information for defining the structure (311) and composing the contents (312) of a plurality of requirement models;
A computation unit (120) that identifies whether there are any inconsistent components among a plurality of the above requirement models, integrates the plurality of the above requirement models if there are no inconsistent components, generates an integrated model, and generates code information of the integrated model; and
It includes a display unit (130) that outputs information on a plurality of requirement models corresponding to the above-described inconsistent components under the control of the above-described operation unit (120);
The above structural definition (311) is defined using logical operators,
Many of the above requirement models are requirements that users must provide in order to automatically perform programming.
At the bottom of the above multiple requirement models, content (313) is configured, and the structure and content (313) configuring the above multiple requirement models are mathematically expressed and correspond to code,
The above content (313) is a programming system using a requirements model characterized by being a single sentence or piece of code.
상기 연산부(120)는,
다수의 상기 요구사항 모델의 구조 정의(311)를 수행하는 모델 구조 정의 모듈(210);
조각 코드 또는 단일문장을 이용하여 다수의 상기 요구사항 모델의 내용 구성(312)을 수행하는 구성 모듈(220);
다수의 상기 요구사항 모델간 통합하는 구조 통합 모듈(230);
다수의 상기 요구사항 모델간 불일치 구성요소가 있는지를 식별하는 불일치 구성요소 식별 모듈(240); 및
상기 불일치 구성요소가 없으면 상기 코드 정보를 생성하는 코드 생성 모듈(250);을 포함하는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
In paragraph 1,
The above operation unit (120) is
A model structure definition module (210) that performs structure definition (311) of a plurality of the above requirement models;
A configuration module (220) that performs content configuration (312) of a plurality of the above requirement models using fragment codes or single sentences;
A structural integration module (230) that integrates multiple of the above requirement models;
A mismatch component identification module (240) that identifies whether there are any mismatch components between a plurality of the above requirement models; and
A programming system using a requirements model, characterized by including a code generation module (250) that generates the code information if there is no such mismatched component.
상기 요구사항 모델의 구조는
반복 (명제) { }
선택 (명제) { }
순차 { }(여기서, 반복, 선택, 순차는 논리 연산자이고, 괄호 및 중괄호는 명제와 블록을 표현한다)을 포함하며, 상기 조각 코드 및 단일문장은 상기의 논리 연산자로 구성되는 요구사항 모델 구조의 최하단의 중괄호내에 있는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
In the second paragraph,
The structure of the above requirements model is
Repeat (proposition) { }
Choice (proposition) { }
A programming system using a requirements model, characterized in that the requirements model structure is comprised of the following logical operators: sequence { } (wherein repetition, selection, and sequence are logical operators, and parentheses and curly brackets express propositions and blocks) , and the fragment code and single statement are within the curly brackets at the bottom of the requirements model structure comprised of the above logical operators.
상기 불일치 구성요소 식별 모듈(240)은 다수의 상기 요구사항 모델간 불일치 구성요소가 있으면 상기 불일치 구성요소를 수정하도록 표시하는 안내 정보를 생성하는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
In the second paragraph,
A programming system using a requirements model, characterized in that the above-mentioned inconsistent component identification module (240) generates guidance information indicating that inconsistent components should be corrected when there are inconsistent components between a plurality of the above-mentioned requirements models.
상기 구조 정의(311)는 각 구성요소의 위치 설정, 각 구성요소의 이름 설정, 각 구성요소의 논리 연산자 설정, 및 각 구성요소의 데이터 설정을 포함하며, 각 구성요소의 위치, 이름, 논리 연산자, 명제, 및 데이터는 각 구성요소의 멤버가 되는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
In paragraph 1,
The above structural 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 a programming system through a requirements model characterized in that the location, name, logical operator, proposition, and data of each component become members of each component.
각 구성요소의 상기 멤버 및 상기 멤버에 대응되는 코드는 미리 룩업테이블로 구성되는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
In paragraph 6,
A programming system using a requirements model, characterized in that the members of each component and the codes corresponding to the members are configured in advance as a lookup table.
상기 각 구성요소는 최하위 구성요소(621), 상기 구성요소(621)의 인접한 상위에 놓이는 차상위 구성요소(622), 및 상기 구성요소(621)의 상위에 놓이는 구성요소(622, 623), 각 구성요소의 가장 상위에 놓이는 최상위 구성요소(623)로서, 구성요소 간의 계층적 관계를 이루는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
In paragraph 6,
A programming system using a requirements model, characterized in that each of the above components is a lowest-level component (621), a second-level component (622) positioned adjacent to and above the above component (621), a component (622, 623) positioned above the above component (621), and a top-level component (623) positioned at the very top of each component, forming a hierarchical relationship between the components.
순차적 위치관계는 동일한 상기 차상위 구성요소(622)의 아래에 위치되는 구성요소 간의 관계인 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
In Article 8,
A programming system using a requirements model, wherein a sequential positional relationship is a relationship between components positioned below the same upper-level component (622).
상기 각 구성요소의 멤버인 이름은 자동 프로그래밍 과정 상에서 구성요소를 구분하는 고유한 식별자로 사용되는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
In paragraph 6,
A programming system using a requirements model, characterized in that the member names of each of the above components are used as unique identifiers for distinguishing components during an automatic programming process.
다수의 상기 구성요소는 명제 및 해당 구성요소와 관계된 데이터를 포함하는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
In paragraph 6,
A programming system via a requirements model, wherein a plurality of said components include propositions and data related to said components.
상기 통합은 위치와 동일한 이름의 구성요소를 중심으로 이루어지고, 상기 논리 연산자, 상기 명제, 상기 데이터를 포함하는 상기 각 구성요소의 멤버는 동일한 이름의 구성요소에 대해서만 통합되고, 동일한 이름이 존재하지 않는 구성요소는 그대로 유지되는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
In paragraph 6,
A programming system using a requirements model, characterized in that the above integration is centered on components with the same name as the location, 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 components that do not have the same name are maintained as is.
상기 구성요소는 수학식 모델로 표현되는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 시스템.
In Article 12,
A programming system using a requirements model, wherein the above components are expressed as a mathematical model.
(b) 연산부(120)가 다수의 상기 요구사항 모델간의 불일치 구성요소가 있는지를 식별하여 불일치 구성요소가 없으면 다수의 상기 요구사항 모델을 통합하여 통합 모델을 생성하고 상기 통합 모델의 코드 정보를 생성하는 단계; 및
(c) 전시부(130)가 상기 연산부(120)의 제어에 따라 상기 불일치 구성요소에 해당하는 다수의 상기 요구사항 모델에 대한 상기 요구사항 모델의 구성요소 정보를 출력하는 단계;를 포함하며,
상기 구조 정의(311)는 논리 연산자를 이용하여 정의되며,
다수의 상기 요구사항 모델은 프로그래밍을 자동으로 수행하기 위해 사용자가 제공해야 하는 요구사항이고,
다수의 상기 요구사항 모델의 최하단에는 내용(313)이 구성되며, 다수의 상기 요구사항 모델을 구성하는 구조와 내용은 수학적으로 표현되고 코드와 대응되고,
상기 내용(313)은 단일문장 또는 조각 코드인 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 방법.
(a) a step in which the input unit (110) receives input information for defining the structure (311) and composing the content (312) of a plurality of requirement models;
(b) a step of the operation unit (120) identifying whether there are any inconsistent components among the plurality of requirement models, and if there are no inconsistent components, integrating the plurality of requirement models to create an integrated model and generating code information of the integrated model; and
(c) a step in which the exhibition unit (130) outputs component information of the requirement model for a plurality of the requirement models corresponding to the mismatched components under the control of the operation unit (120);
The above structural definition (311) is defined using logical operators,
Many of the above requirement models are requirements that users must provide in order to automatically perform programming.
At the bottom of the above multiple requirement models, content (313) is configured, and the structure and content composing the above multiple requirement models are mathematically expressed and correspond to code,
The above content (313) is a programming method using a requirements model characterized by being a single sentence or piece of code.
상기 (b) 단계는,
모델 구조 정의 모듈(210)이 다수의 상기 요구사항 모델의 구조 정의(311)를 수행하는 단계;
구성 모듈(220)이 조각 코드 또는 단일문장을 이용하여 다수의 상기 요구사항 모델의 내용 구성(312)을 수행하는 단계;
구조 통합 모듈(230)이 다수의 상기 요구사항 모델간 통합하는 단계;
불일치 요소 식별 모듈(240)이 다수의 상기 요구사항 모델간 불일치 구성요소가 있는지를 식별하는 단계; 및
코드 생성 모듈(250)이 상기 불일치 구성요소가 없으면 상기 코드 정보를 생성하는 단계;를 포함하는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 방법.
In Article 14,
Step (b) above,
A step in which a model structure definition module (210) performs structure definition (311) of a plurality of the above requirement models;
A step in which a configuration module (220) performs content configuration (312) of a plurality of the above requirement models using fragment codes or single sentences;
A step of integrating a plurality of the above requirement models by the structural integration module (230);
A step for identifying inconsistent elements by a module (240) identifying whether there are inconsistent elements between a plurality of the above requirement models; and
A programming method using a requirements model, characterized in that it includes a step of generating the code information if the code generation module (250) does not have the above-mentioned inconsistent component.
상기 구조 정의(311)는 각 구성요소의 위치 설정, 각 구성요소의 이름 설정, 각 구성요소의 논리 연산자 설정, 각 구성요소의 명제 설정 및 각 구성요소의 데이터 설정을 포함하며, 각 구성요소의 위치, 이름, 논리 연산자, 명제, 및 데이터는 각 구성요소의 멤버가 되는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 방법.
In Article 14,
The above structural definition (311) includes setting the location 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, and a programming method using a requirements model characterized in that the location, name, logical operator, proposition, and data of each component become members of each component.
다수의 상기 요구사항 모델은 각 구성요소의 멤버를 기준으로 분류 및 관리되는 것을 특징으로 하는 요구사항 모델을 통한 프로그래밍 방법.
In Article 16,
A programming method using a requirements model, characterized in that a plurality of the above requirements models are classified and managed based on the members of each component.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220078884A KR102696519B1 (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 KR102696519B1 (en) | 2022-06-28 | 2022-06-28 | Automatic programming system and method using programming model |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20240001943A KR20240001943A (en) | 2024-01-04 |
KR102696519B1 true KR102696519B1 (en) | 2024-08-20 |
Family
ID=89380930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220078884A Active KR102696519B1 (en) | 2022-06-28 | 2022-06-28 | Automatic programming system and method using programming model |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR102696519B1 (en) |
WO (1) | WO2024005318A1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102755698B1 (en) * | 2024-05-29 | 2025-01-21 | 준엔지니어링 주식회사 | Automatic acquisition of component information within a drawing system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050166178A1 (en) * | 2004-01-23 | 2005-07-28 | Masticola Stephen P. | Process for global software development |
US20120324420A1 (en) * | 2009-07-24 | 2012-12-20 | Optimized Systems And Solutions Limited | Process for development of monitoring tools |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6681383B1 (en) * | 2000-04-04 | 2004-01-20 | Sosy, Inc. | Automatic software production system |
KR100976545B1 (en) * | 2007-12-18 | 2010-08-17 | 티쓰리큐 주식회사 | Requirements tracking / management system using interface |
KR100935685B1 (en) * | 2007-12-18 | 2010-01-08 | 한국전자통신연구원 | Software development apparatus and method |
KR101597780B1 (en) * | 2014-05-22 | 2016-02-25 | 황수진 | Method and apparatus for visually implementing software code |
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 |
-
2022
- 2022-06-28 KR KR1020220078884A patent/KR102696519B1/en active Active
-
2023
- 2023-04-07 WO PCT/KR2023/004725 patent/WO2024005318A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050166178A1 (en) * | 2004-01-23 | 2005-07-28 | Masticola Stephen P. | Process for global software development |
US20120324420A1 (en) * | 2009-07-24 | 2012-12-20 | Optimized Systems And Solutions Limited | Process for development of monitoring tools |
Also Published As
Publication number | Publication date |
---|---|
KR20240001943A (en) | 2024-01-04 |
WO2024005318A1 (en) | 2024-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mannhardt | Multi-perspective process mining | |
López-Fernández et al. | Example-driven meta-model development | |
McBroom et al. | A survey of automated programming hint generation: The hints framework | |
Jackson | Software Abstractions: logic, language, and analysis | |
Dragisic et al. | User validation in ontology alignment | |
Ammann et al. | Introduction to software testing | |
Laird et al. | The soar user’s manual version 9.5. 0 | |
Sánchez-Cuadrado et al. | Bottom-up meta-modelling: An interactive approach | |
Anjorin et al. | Benchmarking bidirectional transformations: theory, implementation, application, and assessment | |
US20220091968A1 (en) | System and method for automated generation of test cases and test data for validating a software application | |
WO2020061586A1 (en) | Code completion | |
US20170032058A1 (en) | Graphical Design Verification Environment Generator | |
US10915302B2 (en) | Identification and visualization of associations among code generated from a model and sources that affect code generation | |
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 | |
KR102696519B1 (en) | Automatic programming system and method using programming model | |
CN117897710A (en) | An AI approach to solving industrial data conversion problems | |
CN117785168A (en) | Variable assignment method, medium, device and computing equipment | |
US20110041116A1 (en) | Formal analysis driven based evolution of requirements specifications | |
Sergievskiy et al. | Optimizing UML class diagrams | |
Jackson | Software abstractions, revised edition: logic, language, and analysis | |
CN117472766A (en) | Method and device for generating test case, electronic equipment and medium | |
JP7572819B2 (en) | Model Creation System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20220628 |
|
PA0201 | Request for examination | ||
PG1501 | Laying open of application | ||
E902 | Notification of reason for refusal | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20240520 Patent event code: PE09021S01D |
|
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20240730 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20240814 Patent event code: PR07011E01D |
|
PR1002 | Payment of registration fee |
Payment date: 20240816 End annual number: 3 Start annual number: 1 |
|
PG1601 | Publication of registration |