KR100697246B1 - Method and system of developing a software with utilizing extended metadata of component under component-based development environment - Google Patents

Method and system of developing a software with utilizing extended metadata of component under component-based development environment Download PDF

Info

Publication number
KR100697246B1
KR100697246B1 KR1020040033449A KR20040033449A KR100697246B1 KR 100697246 B1 KR100697246 B1 KR 100697246B1 KR 1020040033449 A KR1020040033449 A KR 1020040033449A KR 20040033449 A KR20040033449 A KR 20040033449A KR 100697246 B1 KR100697246 B1 KR 100697246B1
Authority
KR
South Korea
Prior art keywords
component
client
components
code
glue
Prior art date
Application number
KR1020040033449A
Other languages
Korean (ko)
Other versions
KR20040097941A (en
Inventor
정안모
Original Assignee
정안모
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 정안모 filed Critical 정안모
Priority to JP2006507841A priority Critical patent/JP2006526209A/en
Priority to US10/546,805 priority patent/US20070150855A1/en
Priority to PCT/KR2004/001099 priority patent/WO2004099896A2/en
Publication of KR20040097941A publication Critical patent/KR20040097941A/en
Application granted granted Critical
Publication of KR100697246B1 publication Critical patent/KR100697246B1/en
Priority to JP2009102299A priority patent/JP2009238230A/en
Priority to JP2009102295A priority patent/JP2009238229A/en
Priority to JP2009102297A priority patent/JP2009245441A/en
Priority to JP2009102300A priority patent/JP2009238231A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 컴포넌트 기반의 소프트웨어 개발 기술에 관한 것으로, 특정 컴포넌트 개발 플랫폼이 제공하는 컴포넌트들을 계층적으로 조립하여 소프트웨어를 개발할 수 있는 액티브 바인딩 기술에 관한 것이다. 본 발명은 컴포넌트의 의존 계약 명세를 포함하도록 메타데이터를 확장함으로써, 서로 다른 개발자들에 의해 독립적으로 개발된 컴포넌트들을 다계층 구조로 및/또는 분산 구조 형태로 조립할 수 있게 하는 기술을 제공한다.The present invention relates to a component-based software development technology, and relates to an active binding technology that can develop software by hierarchically assembling components provided by a specific component development platform. The present invention provides a technique that enables the assembly of components developed independently by different developers into a multi-layered and / or distributed structure by extending the metadata to include the dependency contract specification of the component.

본 발명은 서로 독립적 형식의 메타데이터를 구비하고 있는 컴포넌트들을 서버와 클라이언트로서 조립 결합시켜 주는 글루 컴포넌트를 자동 생성시켜 구현함으로써, 대규모 분산 시스템을 순차도 형태로 편집 가능하도록 하며, 컴포넌트 조립을 시계열의 메소드 호출 단위로 세밀하게 시각화함으로써 컴포넌트 조립 작업을 손쉽게 하여 주며, 소프트웨어 유지 보수 및 변경을 용이하게 한다. The present invention automatically generates and implements a glue component that assembles and combines components having metadata of mutually independent form as a server and a client, so that large-scale distributed systems can be edited in a sequential form, and component assembly is time-series. Fine-grained visualization of method invocations simplifies component assembly and software maintenance and modification.

컴포넌트, 액티브 바인딩, 글루 코드, 비주얼 스튜디오, 컴포넌트 기반 코드, 객체 지향 코드.Component, Active Binding, Glue Code, Visual Studio, Component Based Code, Object Oriented Code.

Description

컴포넌트 기반 환경 하에서 확장된 메타데이터를 이용한 소프트웨어 개발 방법 및 시스템{METHOD AND SYSTEM OF DEVELOPING A SOFTWARE WITH UTILIZING EXTENDED METADATA OF COMPONENT UNDER COMPONENT-BASED DEVELOPMENT ENVIRONMENT}METHOD AND SYSTEM OF DEVELOPING A SOFTWARE WITH UTILIZING EXTENDED METADATA OF COMPONENT UNDER COMPONENT-BASED DEVELOPMENT ENVIRONMENT}

도1은 본 발명에 따른 컴포넌트 기반의 소프트웨어 개발 방법을 적용하기 위하여 안출된 컴포넌트 사이의 메시지 전달 구조를 나타낸 도면.1 is a diagram illustrating a message transfer structure between components devised to apply a component-based software development method according to the present invention.

도2a 및 도2b는 각각 종래 기술에 따라 컴포넌트를 조립하는 결합 방법과, 본 발명에 따라 컴포넌트를 조립하는 결합 방법을 나타낸 도면.2A and 2B show a joining method for assembling components in accordance with the prior art and a joining method for assembling components in accordance with the present invention, respectively.

도3은 본 발명에 따른 컴포넌트 기반의 소프트웨어 개발을 위하여 컴포넌트를 구현 및 조립하는 일 처리 흐름도.3 is a process flow diagram for implementing and assembling components for component-based software development in accordance with the present invention.

도4는 본 발명에 따라 하위 컴포넌트가 제공하는 서비스 호출에 관한 클라이언트측 메타데이터를 포함하는 컴포넌트 구현 방법의 일 실시예를 나타내는 일 처리 흐름도.4 is a process flow diagram illustrating one embodiment of a component implementation method that includes client-side metadata regarding service invocations provided by subcomponents in accordance with the present invention.

도5는 본 발명에 따라 컴포넌트들을 조립하는 방법의 양호한 실시예를 나타낸 도면.5 illustrates a preferred embodiment of a method of assembling components in accordance with the present invention.

도6은 본 발명에 따른 컴포넌트간 메시지 전달을 중재하는 글루 컴포넌트를 본 발명에 따른 자동 생성 방법의 일 실시예를 나타내는 일 처리 흐름도.6 is a process flow diagram illustrating one embodiment of an automatic generation method in accordance with the present invention for a glue component that mediates message transfer between components in accordance with the present invention.

도7a 내지 도7e는 본 발명에 따라 제공된 개발 도구에서 컴포넌트를 구현하는 일 실시예를 순서적으로 나타낸 도면.7A-7E are diagrammatic representations of one embodiment of implementing components in a development tool provided in accordance with the present invention.

도8a 내지 도8m은 본 발명에 따라 제공된 개발 도구에서 컴포넌트를 조립하는 일 실시예를 순서적으로 나타낸 도면.8A-8M show in sequence one embodiment of assembling components in a development tool provided in accordance with the present invention.

<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>

310 : 클라이언트 컴포넌트310: Client component

311, 312 : 메타데이터311, 312: metadata

320 : 서버 컴포넌트320: server component

330 : 글루 컴포넌트          330 glue component

410 : 컴포넌트 A410: Component A

420 : 컴포넌트 B420: Component B

712 : 스마트 바인드712: smart bind

713 : 대화창713: Dialog

811 : 컴포넌트 조립 프로젝트811: Component assembly project

812 : 컴포넌트 조립 편집창812: Component assembly edit window

813 : 솔루션 탐색창813: Solution Explorer

814 : 조립 도구창814: Assembly Tool Pane

815 : 오브젝트 라이프 라인815: Object Lifeline

816 : 속성창816: Property Window

817 : 메시지817: message

818 : 클라이언트측 메타데이터818: client-side metadata

819 : 서버측 메타데이터819: server-side metadata

820, 821 : 콤보 박스820, 821: Combo Box

822 : 메시지 속성 대화창822: Message Properties dialog

823 : 글루 코드823: glue code

824 : 코드824: code

825 : 글루 컴포넌트의 서비스 메소드825: Service method of glue component

826 : 글루 컴포넌트 프로젝트826: Glue Component Project

827, 828 : 메시지827, 828: messages

829, 830 : 글루 컴포넌트 프로젝트829, 830: Glue Component Project

831 : 시그너처를 주석으로 표시한 모습831: Annotated signature

832 : 중재 코드832: Arbitration Code

본 발명은 컴포넌트 기반 소프트웨어 개발(CBD, Component-Based Software Development) 기술에 관한 것으로, 보다 상세하게는 여러 개발자들에 의해 각각 독특한 인터페이스를 지니도록 개발되어 시장에 바이너리 코드 형태로 공급되고 있는 많은 컴포넌트들을 서로 조립하여 소프트웨어를 개발하는 방법, 새로운 컴포넌트 메타데이터 포맷, 이를 구현하기 위한 개발 도구 및 개발 환경 시스템에 관한 것이 다.The present invention relates to a Component-Based Software Development (CBD) technology, and more particularly, a number of components that are developed to have a unique interface by various developers and are supplied to the market in binary code form. It is about how to develop software by assembling each other, new component metadata formats, development tools for implementing them, and development environment systems.

더욱 상세하게는, 본 발명은 기존의 컴포넌트가 제공하는 서비스 피호출 규격에 관한 서버측(Server-Side)의 메타데이터(Metadata)뿐 아니라, 하위 컴포넌트에 대한 서비스 호출 규격에 관한 클라이언트측(Client-Side) 메타데이터를 포함하도록 컴포넌트를 구현하는 방법을 제공한다. More specifically, the present invention provides not only server-side metadata related to a service called standard provided by an existing component, but also a client-side related to a service call specification for subcomponents. Side) Provides a way to implement a component to include metadata.

또한, 본 발명은 컴포넌트 조립에 있어서 독립적으로 개발된 서버와 클라이언트 컴포넌트가 가질 수밖에 없는 상호 이질적인 상호 호출/피호출 시그너처 (Signature)를 정합시키기 위하여, 글루 컴포넌트 템플릿 코드(Glue Component Template Code)를 자동 생성하는 방법 및 그 구현 수단을 제공하고, 이와 같이 해서 자동 생성된 글루 컴포넌트를 통하여 서버 컴포넌트와 클라이언트 컴포넌트 사이에 메시지를 전달하게 함으로써 유연한 메시지 흐름 조절(Message Flow Control)이 가능하도록 하는 컴포넌트 조립 방법, 수단 및 구현 시스템에 관한 것이다.In addition, the present invention automatically generates a glue component template code in order to match the heterogeneous mutual call / call signatures that the server and client components independently developed in component assembly have. And a method for implementing the same, and a method and a method for assembling a component to enable flexible message flow control by allowing a message to be transferred between a server component and a client component through an automatically generated glue component. And an implementation system.

최근 들어, 임베디드(Embedded) 시스템 및 유비쿼터스 컴퓨팅(Ubiquitous Computing) 시대가 도래함으로 인하여, 다양한 소프트웨어의 수요가 폭증하고 또한 이미 개발된 소프트웨어에 대하여 변경 요구가 빈번해짐에 따라, 사용자 요구 사항을 쉽게 반영하여 소프트웨어를 신속히 개발할 수 있는 소프트웨어 생산 기술이 요구되고 있다. Recently, due to the advent of embedded systems and ubiquitous computing, the demand for various softwares has soared and changes are frequently required for the already developed software. There is a demand for software production technology that can rapidly develop software.

그런데, 소프트웨어 개발에 흔히 사용되어 오던 구조적 기법, 정보 공학 기반의 개발 방법 또는 객체 지향 (Object-Oriented) 소프트웨어 생산 기술 등과 같은 기존의 소프트웨어 생산 기술들이 소프트웨어 개발 생산성 향상에 있어서 한계 점을 드러냄에 따라, 기존의 방식과 달리 각 기능별로 부품 역할을 하는 컴포넌트를 먼저 개발하고 이들을 조립하여 소프트웨어를 개발하는 방법인 컴포넌트 기반의 소프트웨어 개발(CBD) 기술이 최근 등장하여 빠르게 확산되고 있다.However, as existing software production technologies such as structural techniques, information engineering-based development methods, or object-oriented software production technologies, which have been commonly used in software development, have shown limitations in improving software development productivity, Unlike conventional methods, component-based software development (CBD) technology, which is a method of developing a component that acts as a component for each function first, and then assembles them, has recently emerged and is rapidly spreading.

즉, 현대 경영이 요구하는 정보시스템은 그 복잡도와 규모가 점점 커지고 있으며, 경쟁이 심화되면서 시스템의 신속한 구축(Time-To-Market)과, 변경 및 확장의 용이성(Flexibility), 구축비용의 절감 등의 필요성이 더욱 절실해졌다. 이에 대한 최적의 대안으로써 등장한 컴포넌트 기반 소프트웨어 개발 방법론은 분할 정복의 원리와 객체 지향 개발의 이점을 계승하여, 시스템을 구성하는 단위 업무 기능과 관련 데이터를 묶어 작은 조각들로 분할하되, 이를 컴포넌트 표준 규격을 만족하도록 부품화시켜 재사용을 가능하게 하고, 소프트웨어 개발을 조립 개념으로 발전시켰다.In other words, the information systems required by modern management are becoming more complex and larger in size, and as the competition intensifies, time-to-market, flexibility of change and expansion, and reduction of construction costs The need for more became more urgent. The component-based software development methodology emerged as an optimal alternative to this, inheriting the principle of partition conquest and the advantages of object-oriented development, breaking down the unit business functions and related data that make up the system and dividing it into smaller pieces. In order to be able to be reused, the software development has been developed into an assembly concept.

대규모 기업용 소프트웨어들은 분산 시스템으로써 운영되어지고, 계층적 디자인(Layered Design)의 개념으로 개발되어지는데, 통상적으로 대규모 기업용 소프트웨어들은 대부분 3계층(3-Tier) 혹은 다 계층(N-Tier) 구조로 개발되어진다. 일반적으로, 계층적 설계에서는 상위 층에 프리젠테이션 계층, 중간층에 비지니스 로직 계층, 종단에 데이터서비스 계층을 배치한다. Large enterprise software runs as a distributed system and is developed in the concept of layered design. Typically, large enterprise software is developed in a three-tier or multi-tier structure. It is done. In general, a hierarchical design places the presentation layer at the upper layer, the business logic layer at the middle layer, and the data service layer at the end.

그런데, 종단의 컴포넌트들을 제외한 대부분의 컴포넌트들은 하위 계층의 컴포넌트(들)와 결합되어 있으며, 기본적으로 하위 계층 컴포넌트의 서비스를 바탕으로 자신의 서비스를 상위 계층의 컴포넌트에게 제공한다. 이 때에, 하위 컴포넌트에 대한 서비스 호출은 정적으로 코딩 (Static Coding)된 채 컴파일 되어 블랙 박 스(Black Box - Binary Code) 형태로 배포된다.By the way, most components except the components of the end are combined with the component (s) of the lower layer, and basically provide their services to the components of the upper layer based on the services of the lower layer component. At this time, service calls to subcomponents are compiled with static coding and distributed in the form of black box (binary code).

여기서, 정적 코딩(Static Coding)이라 함은 얼리 바인딩(Early Binding)이라고도 칭하는데, 서버 컴포넌트가 규정하고 있는 인터페이스 규격 명세(이를, 흔히 시그너처라고 부름)에 따라 이에 의존하여 클라이언트 컴포넌트를 개발하는 것을 말한다. 그런데, 전술한 정적 코딩 방식의 컴포넌트 기반 소프트웨어 개발 기술은 아래와 같은 이유에서 그 기술적 한계를 지니고 있다.In this case, static coding is also referred to as early binding, which refers to developing a client component based on an interface specification specification (commonly called a signature) defined by a server component. . However, the above-described static coding method component-based software development technology has its technical limitations for the following reasons.

이미, 개발되어 시장에 나와있는 바이너리 형태(소스 코드가 은닉되어 컴파일된 블랙박스 형태)의 컴포넌트들은 서로 조립하여, 즉 이들을 재사용하여, 설계자가 원하는 기능을 수행하는 소프트웨어를 조립 개발하려면, 상위 층의 컴포넌트(서비스를 호출하는 컴포넌트, 즉 '클라이언트'가 된다)와 하위층 컴포넌트(서비스를 제공하는 컴포넌트,'서버'가 된다) 사이에 시그너처(Signature)가 서로 정합되어야 한다. 여기서, 시그너처란 컴포넌트와의 인터페이스, 또는 클래스 이름(ID; Identification)과 메소드(Method) 이름, 매개 변수 타입 및 순서 등을 포함하게 된다. In order to assemble and develop components in binary form (black boxes compiled with hidden source code) that are already developed and placed on the market, reusing them to assemble and develop software that performs the functions the designer wants, The signature must be matched between the component (the component that invokes the service, or 'client') and the lower layer component (the component that provides the service, or 'server'). Here, the signature includes an interface with a component, a class name (ID) and a method name, a parameter type, and an order.

하드웨어와 달리 소프트웨어는 필요한 부품(즉, 컴포넌트의 수)이 많고 다양하므로(거의 무한대) 미리 그 규격을 정할 수 없으며, 서로 다른 개발자들에 의해 독립적으로 개발된 컴포넌트 사이의 시그너처 정합 문제를 해결하기 위해서는 컴포넌트 소스 코드를 수정한다거나 수동으로 글루 코드를 개발해야 하는 부담이 따른다. Unlike hardware, software requires many parts (i.e. number of components) and varies (almost infinitely), so it is not possible to predetermine the specification, and to solve the problem of signature matching between components developed independently by different developers. There is a burden of modifying the component source code or manually developing the glue code.

더욱이, 현재의 컴포넌트 기술은 배포 시에 제공되는 메타데이터에 하위 컴 포넌트가 제공하는 서비스 호출에 관한 클라이언트측 정보를 포함하지 않기 때문에 재사용하려는 컴포넌트가 다른 컴포넌트에 의존하는 경우 그 컴포넌트를 개발할 당시 작성된 시스템의 상세한 설계 정보를 구하여 참조해야만 한다.Furthermore, current component technologies do not include client-side information about service invocations provided by subcomponents in metadata provided at deployment, so if the component you want to reuse depends on other components, the system created at the time of development of that component Detailed design information should be obtained and referenced.

더욱이, 종래 기술에 따른 컴포넌트 기반 개발 기술은 컴포넌트들 간의 메시지 흐름이 높게 결합되고 정적으로 코드화되어 있기 때문에, 비즈니스 프로세스 중 하나의 컴포넌트를 삭제하거나 추가할 경우 프로세스 내의 다른 컴포넌트에 많은 영향을 준다. 또한, 조립을 통한 다른 소프트웨어 개발에서의 메시지 흐름은 전혀 새로운 것이기 때문에 이러한 정적인 결합은 컴포넌트의 재사용성을 현저히 떨어뜨린다. Moreover, the component-based development techniques according to the prior art have a high coupling and statically coded message flow between components, so deleting or adding one component of a business process has a great effect on other components in the process. Also, because the flow of messages in other software development through assembly is entirely new, this static coupling significantly reduces the reusability of components.

더욱이, 현재 소프트웨어 개발자들에게 제공되는 컴포넌트 플랫폼(Component Platform) 기술은 CORBA, COM+, EJB 및 닷넷(.NET) 등이 있는데, 이들 플랫폼 기반의 컴포넌트들은 공히 사용 계약(Usage Contract)인 인터페이스 메타데이터로서 자신이 제공하는 서비스에 관한 명세(Signature)만을 제공하므로, 바이너리 형태의 컴포넌트가 상위 컴포넌트의 호출에 대한 연산 처리 도중 하위 컴포넌트에게 서비스를 요청하도록 조립하는 것은 원천적으로 불가능하다. Moreover, Component Platform technologies currently available to software developers include CORBA, COM +, EJB, and .NET, which are component metadata that are commonly used as contract contracts. Since it provides only a signature of a service provided by itself, it is not possible to assemble a binary component to request a service from a lower component during a processing operation of an invocation of a higher component.

즉, 독립적으로 개발된 바이너리 컴포넌트들은 다계층 의존 관계(Multi-Layer Dependency) 구조 형태로 조립하는 것이 컴포넌트 기반 개발 방법론이 지향하는 목표임에도 불구하고, 종래 기술은 이를 원천적으로 불가능하게 하고 있다.That is, although the independently developed binary components are assembled in the form of a multi-layer dependency structure, the prior art has made it impossible, although the goal of the component-based development methodology is directed.

이와 같은 이유로 해서, 지금까지 소프트웨어 개발자들은 간단하고 독립적인 서비스를 제공하는 GUI(Graphic User Interface)용 컴포넌트들만을 주로 재사용하 고 있으며, 중간 계층인 비지니스 논리 영역의 컴포넌트들의 재사용율은 지극히 낮은 실정이다. For this reason, until now, software developers have mainly reused only components for GUI (Graphic User Interface), which provide simple and independent services, and the reuse rate of components in the business logic domain, which is the middle layer, is extremely low. .

즉, 다른 컴포넌트 서비스에 의존하지 않는 ActiveX Control, JavaBean 등의 간단한 GUI 용 컴포넌트들이 주로 재사용되고 있으며 컴포넌트 기반 소프트웨어 개발 방법에 의해 설계되고 구현된 비지니스 계층의 컴포넌트들은 거의 재사용되지 않고 있다.That is, simple GUI components such as ActiveX Control and JavaBean, which do not depend on other component services, are mainly reused, and components of the business layer designed and implemented by component-based software development methods are rarely reused.

전술한 종래 기술에 따른 컴포넌트 기반의 소프트웨어 개발 방법의 기술적 한계점을 해결하기 위하여 몇 가지 개선책이 제안된 바 있다. 즉, 종래 기술이 지닌 문제점을 해결하기 위하여 모든 컴포넌트간의 메시지 흐름을 중앙에서 관리하는 방안이 제시되었다. 그 대표적 예는 워크플로우(Workflow)를 사용하는 컴포넌트 조립 방법이다. 워크플로우 방식은 모든 컴포넌트를 다른 컴포넌트에 의존하지 않는 독립적인 컴포넌트로 디자인하고, 워크플로우를 이용하여 컴포넌트 사이의 메시지 흐름을 중앙에서 관리한다.In order to solve the technical limitations of the above-described component-based software development method according to the prior art, several improvements have been proposed. That is, in order to solve the problems of the prior art, a method of centrally managing message flows between all components has been proposed. A representative example is how to assemble a component using a workflow. Workflow approaches design all components as independent components that do not depend on other components, and use workflows to centrally manage message flow between components.

그러나, 워크플로우 방식에서도 여전히 임의의 컴포넌트가 다른 컴포넌트를 직접 호출할 수 없기 때문에, 컴포넌트의 서비스(메소드)들은 단위 업무 처리에 필요한 모든 정보를 매개변수로 받아 자주적으로 결과를 내도록 디자인되어야 한다. 이것은 소프트웨어 공학이 추구해온 분할 정복 및 구조적 방법이 아니므로 설계 방법부터 매우 부자연스러우며, 일반성과 재사용성이 떨어지는 거대한 컴포넌트를 개발하도록 만드는 결과를 초래한다.However, even in the workflow approach, since any component cannot directly call another component, the component's services (methods) must be designed to receive all the information required for the unit of work as a parameter and to produce the result independently. This is not the partitioning conquest and structural method that software engineering has pursued, so it is very unnatural from the design method, resulting in the development of large components that are less general and reusable.

또한, 워크플로우 방식에서는 컴포넌트간의 모든 메시지 흐름이 워크플로우 를 거쳐서 전달되기 때문에 컴포넌트 간 직접 호출에 비해 네트워크와 시스템에 과중한 부담(Overhead)을 주고, 워크플로우 엔진에 이상이 생길 경우 전체 시스템 동작에 영향을 주게 된다.In addition, in the workflow method, all message flows between components are passed through the workflow, which incurs a heavy overhead on the network and system compared to direct invocation between components, and affects the overall system operation when the workflow engine fails. Will be given.

더욱이, 미국 어바인 소재의 캘리포니아 대학(University of California at Irvine)에서 메시지 기반 컴포넌트 조립 방법인 C2 Style을 제한한 바 있는데, C2 스타일에서는 조립을 위한 레퍼(Wrapper) 코드에 매개 변수 중재 논리(Mediation Logic)과 더불어 연결 컴포넌트들의 가동 순서 조절 논리(Flow Control Logic)가 하드 코딩되어야 하므로 조립 과정이 복잡하고 유연한 변경이 어려운 단점이 있다.Furthermore, the University of California at Irvine, USA, has limited C2 Style, a method of assembling message-based components, which uses the Mediation Logic in the wrapper code for assembly. In addition, since the flow control logic of the connection components must be hard coded, the assembly process is complicated and flexible changes are difficult.

즉, C2 스타일은 컴포넌트들이 커넥터(Connectors)에 의해 연결되어 통신 규칙에 따라 서로 메시지를 교환함으로서 컴포넌트를 연결(조립)하는 구조를 가지게 되는데, C2 스타일 컴포넌트들 사이의 통신은 비동기적인 서비스 요청(Request)과 통지(Notification) 메시지 전달을 통해 이루어진다. 이 때에, 각 메시지는 커넥터에 연결된 모든 컴포넌트로 브로드캐스팅(Broadcasting)되며, 각 컴포넌트의 다이얼로그에 정의되어있는 메시지 규칙에 따라 받은 메시지를 처리할지 무시할지를 결정하게 된다. That is, the C2 style has a structure in which components are connected (assembled) by connecting components by exchanging messages with each other according to communication rules by connecting connectors, and communication between C2 style components is an asynchronous service request. And notification messages. At this time, each message is broadcasted to all components connected to the connector, and it is decided whether to process or ignore the received message according to the message rules defined in each component's dialog.

더욱이, 종래 기술에 따른 C2 스타일의 경우, 소프트웨어 시스템을 구성하는 컴포넌트들과 이들의 상호작용 관계 및 컴포넌트와 커넥터들의 합성 규칙을 상위 추상화 수준에서 명시하기 위해 ADL(Architecture Description Language)을 컴포넌트 명세 언어(IDN: Component Interface Definition Notation)와 아키텍처 명세 언어(ADN: Architecture Definition Notation)의 두 가지 표기 형식으로 구분하여 정 의하여야 하는 번거러움이 있다. Furthermore, in the case of the C2 style according to the prior art, the Architecture Description Language (ADL) is defined in order to specify at a higher level of abstraction the components constituting the software system, their interactions, and the composition rules of the components and connectors. There is a hassle that needs to be defined in two notation formats, IDN: Component Interface Definition Notation and Architecture Definition Notation.

무엇보다도, 종래 기술에 따른 C2 스타일의 경우, 재사용하려는 컴포넌트간의 계층적 의존 관계를 구현하기 위해서는 화이트 박스(White Box, 소스 코드 수정) 접근 방법이 불가피하므로 컴포넌트 재사용성을 현저히 떨어뜨린다.First of all, in the case of the C2 style according to the prior art, a white box approach is inevitable to implement a hierarchical dependency relationship between components to be reused, thereby significantly reducing component reusability.

또한, 종래 기술에 따른 C2 스타일을 적용하여 컴파일된 바이너리 형태의 중간 계층 컴포넌트를 재사용하여 조립하려는 경우, 컴포넌트가 하위 컴포넌트의 어떤 메소드 호출을 어느 시점에 필요로 하는 지에 대한 정보(Metadata)가 없기 때문에 계층적 의존 구조를 구현하는 것이 근본적으로 불가능하다. In addition, when reusing and assembling binary layered components compiled by applying the C2 style according to the prior art, since there is no information (Metadata) at which point the component needs a method call of a subcomponent. Implementing a hierarchical dependency structure is fundamentally impossible.

따라서, C2 스타일로 바이너리 컴포넌트들을 조립하려면 컴포넌트가 서비스 처리 도중에 하위 컴포넌트 서비스를 요청하는 대신, 서비스 처리에 필요한 모든 정보를 처음부터 매개변수로 받도록 컴포넌트들을 재설계 하고, 래퍼 코드에서는 먼저 하위 컴포넌트를 호출하여 필요한 정보를 받아 해당 컴포넌트(Inner Component) 메소드 호출 시 매개 변수로 전달한 다음 리턴 값을 상위 컴포넌트에 전달하는 흐름 조절 논리(Flow Control Logic)를 구현해야 한다. Therefore, to assemble binary components in C2 style, instead of requesting the subcomponent service during the service processing, the components are redesigned so that they receive all the information required for processing the service from the beginning as parameters, and the wrapper code first calls the subcomponent. Therefore, it is necessary to implement flow control logic that receives necessary information and passes it as a parameter when calling the inner component method, and then passes the return value to the upper component.

이러한 접근법은 오늘날 소프트웨어 공학자들이 추구하고 있는 구조적 설계 기법을 적용하는 것을 원천적으로 불가능하게 하고 있는 요소로 작용하게 되며, 더욱이 C2스타일을 적용하는 경우 그 조립 프로세스가 복잡하여 에러 가능성이 높음과 동시에, 이에 대한 디버깅(Debugging)이 어려우며 많은 시간과 비용을 소모하게 하는 단점이 있다. This approach is an element that makes it inherently impossible to apply the structural design techniques that software engineers are pursuing today. Moreover, when the C2 style is applied, the assembly process is complicated and error-prone. Debugging is difficult and can be very time consuming and expensive.

더욱이, 종래 기술에 대한 C2 스타일은 컴포넌트간의 모든 상호작용이 항상 커넥터를 통한 브로드캐스팅 및 통신 규칙에 의한 검사 과정을 거쳐 일어나기 때문에 무수히 많은 불필요한 인터럽트와 메시지 식별 처리를 유발시켜 시스템 부담을 가중시키는 단점이 있다. Moreover, the C2 style of the prior art has the disadvantage of incurring a myriad of unnecessary interrupts and message identification processing, which adds to the system burden because all interactions between components always occur through the process of broadcasting and communication rules through the connector. have.

따라서, 본 발명은 전술한 문제점을 해결하기 위하여 제안된 것으로, 클라이언트측 메타데이터 생성 기술, 글루 코드로 컴포넌트 결합을 중재하는 기술, 글루 코드를 자동 생성하는 기술을 활용하여, 컴포넌트 간 결합(조립)에 엄격하게 요구되는 시그너처의 구문적 및 의미론적 정합 문제를 극복함으로써 컴포넌트의 재사용율을 높이고, 자연스런 컴포넌트 기반 개발 방법에 따라 개발된 컴포넌트들 간 메시지 흐름을 컴포넌트 코드 수정 없이도 유연하게 조절할 수 있는 방법을 제공하는데 제1 목적이 있다.Accordingly, the present invention has been proposed to solve the above-mentioned problems, and is a combination between components (assembly) by utilizing a client-side metadata generation technique, a technique for mediating component association with glue code, and a technique for automatically generating glue code. By overcoming the syntactic and semantic matching problem of signatures that are strictly required for the system, we can increase the reuse rate of components and flexibly control the message flow between components developed according to the natural component-based development method without modifying the component code. The first purpose is to provide.

본 발명의 제2 목적은 상기 제1 목적에 부가하여, 소프트웨어 개발에 있어서 탑다운 방식으로 친숙한 순차도(Sequence Diagram) 형태의 컴포넌트 조립이 가능하게 하는 글루 템플릿 코드 생성 기술 및 다계층 구조 구현 방법을 제공하는데 있다. In addition to the first object, the second object of the present invention is a glue template code generation technique and a method of implementing a multi-layer structure, which enable assembling components in a familiar sequence diagram form in a top-down manner in software development. To provide.

본 발명의 제3 목적은 상기 제1 및 제2 목적에 부가하여, 재사용성이 획기적으로 개선된 컴포넌트 생성 및 조립 기술, 비지니스 로직 변화에 따른 유지 보수를 용이하게 하는 컴포넌트 기반의 소프트웨어 개발 디바이스, 시스템 및 방법을 제공하는데 있다.The third object of the present invention is, in addition to the first and second objects, a component creation and assembly technique with remarkably improved reusability, and a component-based software development device and system that facilitates maintenance according to business logic changes. And providing a method.

본 발명의 제4 목적은 상기 목적들에 부가하여, 컴포넌트의 분산 배치 및 원 격 호스팅을 가능하게 하고, 조립된 컴포넌트를 통합 테스트하고 모니터링하는 것을 가능하게 하는 컴포넌트 기반의 소프트웨어 개발 디바이스, 시스템 및 방법을 제공하는데 있다.A fourth object of the present invention is, in addition to the above objects, a component-based software development device, system and method that enables distributed placement and remote hosting of components and enables integrated testing and monitoring of assembled components. To provide.

본 발명의 제5 목적은 상기 목적들에 부가하여, 컴포넌트의 크기를 적당한 크기로 입자화하여(Fine-Grained) 컴포넌트의 재사용성을 향상시킬 수 있는 컴포넌트 기반의 소프트웨어 개발 디바이스, 시스템 및 방법을 제공하는데 있다.In addition to the above objects, the fifth object of the present invention is to provide a component-based software development device, a system and a method which can improve the reusability of a component by fine-graining the size of the component to an appropriate size. It is.

본 발명의 제6 목적은 상기 목적들에 부가하여, 바이너리 컴포넌트들을 다계층 구조로 구현 가능하도록 하고, 브로드캐스팅 및 비동기 메시지로의 변환 등의 추가 부담(Overhead)이 없는 조립 방법을 제공하고, 개발 과정에서 별도의 문서화 작업이 필요 없으며, 저렴하고 신속한 유지 보수가 가능하도록 하는 컴포넌트 기반의 소프트웨어 개발 디바이스, 시스템 및 방법을 제공하는데 있다.In addition to the above objects, a sixth object of the present invention is to provide a method of assembling binary components in a multi-layered structure, and to provide and develop an assembly method without additional overhead such as broadcasting and conversion into asynchronous messages. It does not require any documentation in the process, and provides a component-based software development device, system, and method for enabling inexpensive and rapid maintenance.

상기 목적을 달성하기 위하여, 본 발명은 컴포넌트 기반 개발 방법의 컴포넌트 구현과 조립에 있어서, 컴포넌트 개발자로부터 호출하고자 하는 하위 컴포넌트의 서비스의 시그너처와 주석을 임의로 입력받는 처리수단; 입력받은 시그너처를 기반으로, 글루 컴포넌트의 서비스를 동적으로 바인딩하고(Late Binding) 호출하는 헬퍼 함수(Helper Function) 코드를 생성하는 처리수단; 하위 서비스 호출 부분에 새로 만들어진 헬퍼 함수 호출 코드를 생성하는 처리수단; 나중의 메시지 흐름 조절 및 조립 시 호출 서비스를 선택하고, 글루 컴포넌트의 템플릿 코드를 자동 생성하는데 이용되는 클라이언트측 메타데이터를 생성하는 처리수단; 테스트용 임시 글 루 컴포넌트를 만들어 독립적으로 컴포넌트 기능을 테스트하는 처리수단으로 이루어진 것을 특징으로 하는 컴포넌트 구현 방법을 제공하고, GUI Tool을 이용하여 조립할 컴포넌트들을 선택하여 도면에 배치하는 처리수단; GUI Tool을 이용하여 도면에 배치된 컴포넌트 중에서 클라이언트 컴포넌트와 서버 컴포넌트를 선택하여 컴포넌트간 메시지 흐름을 자유롭게 설정하는 처리수단; 글루 컴포넌트의 템플릿 코드를 자동 생성하고 중재코드를 입력받는 처리수단; 글루 코드들을 컴파일하여 글루 컴포넌트를 생성하는 처리수단으로 이루어진 것을 특징으로 하는 컴포넌트 조립 방법을 포함하여 이루어진 것을 특징으로 한다. In order to achieve the above object, the present invention in the component implementation and assembly of the component-based development method, processing means for arbitrarily inputting the signature and annotation of the service of the sub-component to be called from the component developer; Processing means for generating a helper function code for dynamically binding and calling a service of a glue component based on the input signature; Processing means for generating a newly created helper function call code in the lower service call part; Processing means for selecting a calling service for later message flow adjustment and assembly and for generating client-side metadata used for automatically generating template code of the glue component; A component implementing method comprising a processing means for independently testing a component function by creating a test temporary glue component, and processing means for selecting components to be assembled using a GUI tool and arranging them in a drawing; Processing means for freely setting a message flow between components by selecting a client component and a server component among the components arranged in the drawing using a GUI tool; Processing means for automatically generating a template code of a glue component and receiving an arbitration code; Comprising the component assembly method characterized in that consisting of the processing means for generating a glue component by compiling the glue codes.

본 발명은 기존 개념의 인터페이스를 서버측 인터페이스(Server-Side Interface)라 명명하고, 하위 컴포넌트에 대한 의존 계약(Dependency Contract)을 클라이언트측 인터페이스(Client-Side Interface)라 명명함을 특징으로 한다. 또한, 본 발명은 독립된 개발자들이 개발하여 시장에 나와있는 다양한 컴포넌트들을 서로 조립하는데 필요한 규격에 관한 내용(이를 메타데이타라 칭함)을 정의하여 클라이언트측 인터페이스에 포함됨을 특징으로 한다. The present invention is characterized in that the interface of the existing concept is called a server-side interface (Server-Side Interface), and the dependency contract (Dependency Contract) for the sub-component is called a client-side interface (Client-Side Interface). In addition, the present invention is characterized in that it is included in the client-side interface by defining the contents (hereinafter referred to as metadata) for the specification required for independent developers to assemble various components on the market.

이와 같이, 본 발명에 따라 서버측뿐만 아니라 클라이언트측 인터페이스 정보를 포함하도록 메타데이터를 확장하면, 조립 도구가 연결할 양측 컴포넌트의 메타데이터를 동적으로 읽어서(Reflection) 글루 코드(Glue Code) 템플릿을 자동으로 생성하는 것이 가능해진다.As such, when metadata is extended to include client-side interface information as well as server-side according to the present invention, the assembly tool dynamically reads metadata of both components to be connected and automatically generates the glue code template. It becomes possible to generate.

본 발명에 따른 컴포넌트 조립 기술은 바이너리(Binary) 컴포넌트들의 다계층 구조 조립을 가능하게 할뿐만 아니라, 이질적 컴포넌트 사이의 매게 변수들에 존재하는 구문적(Syntatic) 또는 의미론적(Semantic) 부정합을 중재하는 논리 (Mediation Logic)을 본 발명에 따른 글루 코드에 삽입함으로써 컴포넌트 재사용율을 극대화 할 수 있다.The component assembly technique according to the present invention not only enables the assembly of a multi-layered structure of binary components but also mediates the syntactic or semantic inconsistencies present in parameters between heterogeneous components. By inserting logic (Mediation Logic) in the glue code according to the present invention can maximize the component reuse rate.

종래에는 하위 컴포넌트에 의존하여 자신의 서비스를 완수하는 중간계층의 컴포넌트를 개발할 때, 기존에는 하위 컴포넌트의 식별자와 인터페이스 명세를 알아야 하기 때문에 개발 순서가 필요했으나, 본 발명은 하위 컴포넌트의 정보를 사용하는 대신 임의로 새로운 식별자와 명세를 생성하여 클라이언트측 인터페이스로 삼고, 조립구도가 이 메타데이터를 읽어 해당 식별자와 명세를 갖는 글루코드를 생성하도록 하고 있다. Conventionally, when developing a middle layer component that completes its service depending on a subcomponent, a development order was required because the identifier and interface specification of the subcomponent were previously known, but the present invention uses the information of the subcomponent. Instead, new identifiers and specifications are arbitrarily generated as client-side interfaces, and the assembly structure reads this metadata to generate glucose with the identifiers and specifications.

그 결과, 하위 컴포넌트 없이 비순차(Non-Procedural) 방식으로 중간 계층의 컴포넌트 개발 및 테스트가 가능해져 컴포넌트 개발 생산성을 증대할 수 있다. 본 발명의 상세한 설명에서는 본 발명의 메타데이터 확장과 조립 기법에 대하여, 하위 컴포넌트의 인터페이스에 수동적(Passive)으로 의존하는 기존 결합 방식과 대비시켜, 액티브 바인딩(Active Binding)이라 명명하기로 한다.As a result, it is possible to develop and test middle-tier components in a non-procedural manner without subcomponents, thereby increasing component development productivity. In the detailed description of the present invention, the metadata extension and assembly technique of the present invention will be referred to as active binding, in contrast to the existing binding scheme that passively depends on the interface of the subcomponent.

본 발명에 따른 컴포넌트 조립 기술은 컴포넌트를 다른 컴포넌트에 독립적으로 개발 가능하도록 하며, 유연한 컴포넌트 조립을 위해 필요한 모든 정보를 메타데이터로 포함하도록 기존의 메타데이터를 확장하고, 이 메타데이터를 이용하여 자동으로 글루 템플릿을 생성하며, 글루 메커니즘을 적용하여 컴포넌트간 메시지 흐름을 유연하게 조절하는 컴포넌트 구현 및 조립 장치를 제공한다.The component assembly technology according to the present invention enables a component to be developed independently of other components, extends existing metadata to include all information necessary for flexible component assembly as metadata, and automatically uses the metadata. It creates glue templates and provides component implementation and assembly devices that flexibly control message flow between components by applying glue mechanisms.

본 발명은 컴포넌트의 조립을 위한 중재 컴포넌트인 글루 컴포넌트의 템플릿 을 자동으로 생성해줌으로써 컴포넌트의 조립에 걸리는 시간과 비용을 현저하게 줄여주며 다른 컴포넌트에 종속적인 컴포넌트들의 재사용율을 극적으로 향상시키며 컴포넌트 메시지 흐름 조절을 유연하게 하고 컴포넌트간의 정합도의 엄밀성을 완화시킴으로써 새로운 시스템의 개발 및 유지 보수를 매우 용이하게 한다. The present invention automatically generates a template of a glue component, which is an arbitration component for assembling a component, significantly reducing the time and cost of assembling the component, dramatically improving the reuse rate of components dependent on other components, and providing a component message. Flexibility in flow control and ease of rigor of component-to-component matching greatly facilitates the development and maintenance of new systems.

상술한 목적, 특징들 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해 질 것이다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일 실시예를 상세히 설명한다.The above objects, features and advantages will become more apparent from the following detailed description taken in conjunction with the accompanying drawings. Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings.

각각의 도면은 다음과 같은 내용을 도시하고 있다. 도1은 본 발명에 따른 컴포넌트 기반의 소프트웨어 개발 방법을 적용하기 위하여 안출된 컴포넌트 사이의 메시지 전달 구조를 나타낸 도면이다. Each drawing shows the following contents. 1 is a diagram illustrating a message transfer structure between components devised to apply a component-based software development method according to the present invention.

도1을 참조하면, 바이너리 코드로 컴파일 되어서 블랙 박스 형태로 제공되는 컴포넌트(310, 320)들 사이의 유연한 메시지 흐름 조절을 위하여, 특정 기능 서비스를 요청하는 클라이언트 컴포넌트(310)는 하위 컴포넌트(320; 서버 컴포넌트)로부터 어떠한 시그너처를 가진 서비스를 이용하는지에 대한 명세를 하고 있는 메타데이터(311)와 서버 컴포넌트(Server Component; 320)의 서비스를 이용하기 위한 사용 계약인 인터페이스에 해당하는 메타데이터 (312)를 사용하여 아교(Glue) 개념을 적용한 중재자인 글루 컴포넌트 (330)를 구현함으로써 두 컴포넌트(310, 320)를 조립한다. Referring to FIG. 1, for flexible message flow control between components 310 and 320 compiled into binary code and provided in a black box form, the client component 310 requesting a specific function service includes a subcomponent 320; Metadata 311 that specifies a service having a signature from a server component and metadata 312 corresponding to an interface that is a usage contract for using a service of a server component 320. By assembling the two components (310, 320) by implementing the glue component 330, which is a mediator applying the glue concept using.

글루 컴포넌트(330)가 호출 정보를 가지고 동적으로 메시지 흐름을 제어하도록 하여, 클라이언트 컴포넌트(310)와 서버 컴포넌트(320)는 서로의 호출 정보를 가지고 있지 않아도 서로 호출하고 호출될 수 있다. 이러한 동적인 메시지 흐름 제어를 통해 컴포넌트 개발 및 조립 효율성을 증가시키며 컴포넌트 팀 단위의 프로젝트가 가능해진다. By allowing the glue component 330 to dynamically control the message flow with the call information, the client component 310 and the server component 320 can be called and called to each other even if they do not have each other's call information. This dynamic message flow control increases component development and assembly efficiency and enables component team projects.

도2a 및 도2b는 각각 종래 기술에 따라 컴포넌트를 조립하는 결합 방법과, 본 발명에 따라 컴포넌트를 조립하는 결합 방법을 나타낸 도면이다. 도2a(종래 기술)을 참조하면, 기존의 컴포넌트 기반 소프트웨어 개발에서는 클라이언트 컴포넌트 A(410)가 서버 컴포넌트 B(420)의 서비스를 b1(421)이라는 인터페이스를 사용하여 호출하고 있다면 그 호출 내용이 클라이언트 컴포넌트 A(410) 안에 정적으로 코드화되고 컴파일 되어 바이너리 형태로 배포되게 된다. 2A and 2B are diagrams respectively illustrating a joining method for assembling components according to the prior art and a joining method for assembling components according to the present invention. Referring to FIG. 2A (Prior Art), in the existing component-based software development, if the client component A 410 is calling a service of the server component B 420 using an interface called b1 421, the call content is the client. The component A 410 is statically coded, compiled and distributed in binary form.

즉, 컴포넌트간의 통합을 통한 메시지 흐름이 높게 결합되어 있으며 정적으로 코드화되어 있으므로 변경하기에 많은 부하가 걸리며 재사용성도 많이 떨어진다. 또한, 전체 시스템 중에 하나의 컴포넌트 서비스를 삭제하거나 추가할 경우 프로세스 내의 다른 컴포넌트에 많은 영향을 주게 된다. 이와 같은 변경의 부하는 컴포넌트를 이용하여 새로운 제품을 개발하기 위한 Time-To-Market을 이루지 못하는 원인이 된다. In other words, the flow of messages through integration between components is highly combined and statically coded, so it takes a lot of load to change and also reduces reusability. In addition, deleting or adding one component service in the whole system has a great effect on other components in the process. This change in load causes the time-to-market to develop new products using components.

반면에, 도2b에 도시한 본 발명에 따른 컴포넌트 조립 개념은 클라이언트 컴포넌트 A(310)가 서버 컴포넌트 B(320)의 인터페이스 b1()(322)을 통해 제공되는 서비스를 호출해야하는 경우, 클라이언트 컴포넌트 A(310)가 서버 컴포넌트 B(320)에 관한 사용자 계약을 모르더라도, 클라이언트 컴포넌트 A(310)가 하위 컴포넌트를 호출하는 부분에서 정의한(컴포넌트 ID = 컴포넌트X, 인터페이스 ID = x1(), 그 리고 오퍼레이션 시그너처들에 대한) 정보를 메타데이터(311)로 구축하고 이를 컴포넌트에 포함시킴으로서, 이 메타데이터(311)를 이용하여 메타데이터에서 정의된 속성을 만족하는(컴포넌트 ID = 컴포넌트X, 인터페이스 ID = x1(), 호출된 오퍼레이션과 시그너처가 같은 오퍼레이션을 가지고 있는) 글루 컴포넌트를 만들고, 글루 컴포넌트 안에서 서버 컴포넌트 B(320)의 인터페이스 b1()을 호출하여 결과 값을 클라이언트 컴포넌트 A(310)로 전달하게 함으로써, 서버 컴포넌트 B(320)의 서비스를 클라이언트 컴포넌트 A(310)가 호출하여 사용할 수 있다. On the other hand, the concept of component assembly according to the invention shown in FIG. 2B is such that when client component A 310 needs to invoke a service provided through interface b1 () 322 of server component B 320, client component A Although 310 does not know the user contract with respect to server component B 320, the client component A 310 defines a subcomponent called (component ID = component X, interface ID = x1 (), and operation). By building information about the signatures into the metadata 311 and including it in the component, the metadata 311 is used to satisfy the attributes defined in the metadata (component ID = component X, interface ID = x1). (), Create a glue component with the called operation and signature with the same operation, and check the server component B 320's By calling a face b1 () by having passed the results to the client component A (310), the client services component A (310) of the server component B (320) that may be used in the call.

본 발명에 의한 컴포넌트 조립 방법은 서로의 정확한 호출 정보를 알지 못하더라도 컴포넌트들 간의 호출 및 피호출이 가능해져 컴포넌트간의 메시지 흐름이 매우 유연해 진다. 글루 컴포넌트(330)를 사용함으로써 완벽하게 일치하지 않는 컴포넌트들도 커스터마이징하여 연결할 수 있으며, 컴포넌트간 메시지 흐름의 생성, 변경 및 삭제 작업을 매우 쉽게 수행할 수 있어 전체 시스템의 구축 및 유지 보수에 따른 부하를 현저하게 줄여준다.In the method of assembling components according to the present invention, even if the exact call information of each other is not known, the calling and the called between the components can be made and the message flow between the components becomes very flexible. By using the glue component 330, even components that are not perfectly matched can be customized and connected, and the creation, modification, and deletion of message flows between components can be performed very easily. Significantly reduces

도3은 본 발명에 따른 컴포넌트 기반의 소프트웨어 개발을 위하여 컴포넌트를 구현 및 조립하는 일 처리 흐름도로서, 그 일 실시예를 나타낸 도면이다. 도3을 참조하면, 본 발명에 따라 글루 컴포넌트 템플릿을 이용하여 컴포넌트 기반의 소프트웨어를 개발하는 방법은 컴포넌트 구현 단계(단계 S1)와 컴포넌트 조립 단계 (단계 S2)의 2개 단계로 이루어지고, 이 중 컴포넌트 구현 단계(단계 S1)는 컴포넌트를 상호 작용하는 다른 컴포넌트들에 독립적으로 구현하기 위해 하위 컴포넌트로부터 제공받아야 하는 서비스의 시그너처와 주석을 입력받는 단계(단계 S11), 입력 받은 정보를 바탕으로 글루 컴포넌트의 서비스를 동적으로 바인딩하고 호출하는 헬퍼 함수 코드를 생성하는 단계(단계 S12), 하위 서비스 호출 부분에 헬퍼 함수 호출 코드를 삽입하는 단계(단계 S13), 하위 컴포넌트 호출에 관한 정보를 메타데이터로 생성하는 단계(단계 S14), 테스트용 임시 글루 컴포넌트를 만들어 독립적인 컴포넌트 기능 테스트를 수행하는 단계(단계 S15) 등 5개의 단계로 이루어져 있다. 3 is a flowchart illustrating a process of implementing and assembling components for component-based software development according to the present invention, showing an embodiment thereof. Referring to FIG. 3, the method for developing component-based software using the glue component template according to the present invention includes two steps, a component implementation step (step S1) and a component assembly step (step S2). The component implementation step (step S1) is a step of receiving a signature and an annotation of a service that should be provided from a subcomponent in order to implement the component independently of other interacting components (step S11), and a glue component based on the received information. Generating helper function code for dynamically binding and calling a service of the step (step S12), inserting the helper function call code in the subservice call part (step S13), and generating information about the subcomponent call as metadata Step (step S14), we create a temporary glue component for testing and Performing a bit (step S15) and the like consists of five steps:

또한, 컴포넌트 조립 단계(단계 S2)는 GUI Tool을 이용하여 조립할 컴포넌트들을 선택하여 도면에 배치하는 단계(단계 S21), 도면에 배치된 컴포넌트들 간 메시지 흐름을 설정하는 단계 (단계 S22), 두 컴포넌트를 연결할 글루 컴포넌트의 템플릿을 자동으로 생성하여 중재 코드를 삽입하는 단계(단계S23), 글루 코드들을 컴파일 하여 글루 컴포넌트를 생성하는 단계(단계S24) 등 4개의 단계로 이루어진다. In addition, the component assembly step (step S2) is a step of selecting the components to be assembled using the GUI Tool to place in the drawing (step S21), setting the message flow between the components arranged in the drawing (step S22), two components Automatically generating a template of the glue component to be connected to insert the arbitration code (step S23), and compile the glue code to generate the glue component (step S24) consists of four steps.

즉, 본 발명은 모든 컴포넌트들을 근본적으로 다른 컴포넌트들과 독립적으로 구현(단계 S11 ~ 단계 S13)하고 기능을 테스트(단계 S15)할 수 있게 하게 하며, 독립적인 컴포넌트들 사이의 유연한 메시지 흐름을 위해 기존 메타데이터를 확장하여 자신이 필요로 하는 서비스에 대한 정보도 메타데이터에 포함(단계 S14) 시킴으로써 컴포넌트를 구현하는 것을 특징으로 한다. That is, the present invention enables all components to be fundamentally independent from other components (steps S11 to S13) and to test a function (step S15), and to provide a flexible message flow between independent components. It is characterized in that the component is implemented by extending the metadata to include information about a service required by the metadata in the metadata (step S14).

또한, 컴포넌트 메시지 흐름을 GUI 환경에서 유연하게 커스터마이징(단계 S21, 단계 S22)하고, 컴포넌트 조립 시 호출자 컴포넌트와 피호출자 컴포넌트의 메타데이터를 이용하여 둘 사이의 메시지 흐름을 연결해 주는 글루 컴포넌트의 템플릿을 자동으로 생성하고 컴포넌트 메시지 흐름의 무결성을 맞춰주는 중재 코드를 편집(단계 S23)하고, 글루 코드들을 컴파일 하여 글루 컴포넌트를 생성(단계 S24) 함으로써, 컴포넌트 조립 오류를 최소화하면서도 신속한 컴포넌트 조립을 가능하게 한다.In addition, it flexibly customizes the component message flow in the GUI environment (steps S21 and S22), and automatically creates a template of the glue component that connects the message flow between the two by using metadata of the caller component and the called component when assembling the component. By editing the arbitration code for generating the component and matching the integrity of the component message flow (step S23), and compiling the glue codes to generate the glue component (step S24), it is possible to quickly assemble the component while minimizing component assembly errors.

도4는 본 발명에 따라 하위 컴포넌트가 제공하는 서비스 호출에 관한 클라이언트측 메타데이터를 포함하는 컴포넌트 구현 방법의 일 실시예를 나타내는 일 처리 흐름도이다. 이 과정은 기존 컴포넌트 기반 개발 방법론의 문제점들의 근본 원인인 컴포넌트간 메시지 흐름의 강한 결합도를 완화시키기 위해 컴포넌트 구현 시에 하위 컴포넌트 호출에 관한 부분을 컴포넌트 내부적으로 처리하고 이 정보를 메타데이터 형태로 컴포넌트에 포함시킴으로써 컴포넌트를 독립적으로 개발하도록 하고 컴포넌트의 재사용성을 향상시키는 단계이다. 4 is a process flow diagram illustrating an embodiment of a component implementation method that includes client-side metadata regarding service invocations provided by subcomponents in accordance with the present invention. This process processes the internal parts of the sub-component call internally and implements this information in the form of metadata to alleviate the strong coupling of message flow between components, which is the root cause of the problems of the existing component-based development methodology. This is a step that allows you to develop components independently and to improve their reusability.

도4를 참조하면, 본 발명에 따른 규격에 맞도록 컴포넌트를 개발하다가 (단계 S111), 하위 컴포넌트의 서비스 호출이 요구되는 시점에서(단계 S112), 하위 컴포넌트의 존재 유무에 관계없이 독립적으로 이를 컴포넌트 내부적으로 처리하도록 제공받을 서비스, 즉 오퍼레이션의 임의의 이름과 그 서비스를 이용하기 위해 넘겨주어야 하는 파라미터들과 반환 받을 리턴 값들에 관한 시그너처와 이를 설명하는 주석 정보를 사용자로부터 입력받는다(단계 S113). Referring to Figure 4, while developing a component to meet the standard according to the present invention (step S111), when the service call of the lower component is required (step S112), independently of the presence or absence of the lower component, the component A user is provided with a signature about a service to be provided for processing internally, namely, an arbitrary name of an operation, parameters to be passed in order to use the service, and return values to be returned, and annotation information describing the same (step S113).

이어서, 이를 기반으로 입력받은 시그너처를 만족하는 컴포넌트 해당 클래스의 멤버 함수인 헬퍼 함수를 정의하고, 헬퍼 함수 안에 하위 컴포넌트의 서비스를 동적 바인딩 방법으로 호출하는 코드(임의의 하위 컴포넌트 및 인터페이스의 ID 정의 및 객체 생성, 입력받은 시그너처를 만족하는 오퍼레이션 호출)를 자동 생성한다(단계S12).Subsequently, a helper function that is a member function of a component class of a component that satisfies the inputted signature is defined, and code that calls a service of a subcomponent in the helper function by using a dynamic binding method (defining IDs of arbitrary subcomponents and interfaces and Object generation, operation call that satisfies the input signature) is automatically generated (step S12).

한편, 후속하여 하위 컴포넌트의 오퍼레이션을 호출하는 부분을 새로 생성한 헬퍼 함수 호출로 대체하는 코드를 자동 생성하는 과정(단계 S13)을 통해 다른 컴포넌트와의 종속성을 근본적으로 제거하여 독립적으로 구현한다. 위와 같은 호출하고자 하는 하위 컴포넌트 서비스의 시그너처와 주석 입력을 통한 서비스 호출 부분을 컴포넌트 내부적으로 처리하는 일련의 과정은 소위 마법사(Wizard)를 이용하여 자동으로 처리하도록 구현하면, 하위 컴포넌트 호출 부분의 오류를 최소화하며 보다 손쉽게 여러 단계의 과정을 처리할 수 있다. On the other hand, through the step of automatically generating a code (step S13) to replace the sub-component call to the operation of the sub-component to the newly generated helper function call to implement the independent dependency of the other components. If you implement a series of processes that process the internal part of the service through the signature and annotation input of the subcomponent service that you want to call as above, you can use the so-called Wizard to implement the error of the subcomponent calling part. It can minimize and process multiple steps more easily.

다시 도4를 참조하면, 본 발명에 따른 컴포넌트 기반의 방법은 하위 컴포넌트와의 조립을 위해 컴포넌트 내부 헬퍼 함수에서 정의한 서비스 호출에 관한 정보를 컴포넌트 메타데이터로 생성하여 컴포넌트 내부에 포함시킴으로써 기존의 메타데이터를 확장시킨다(단계 S14). 이 메타데이터 정보는 기존적으로 포함되어 있는 자신이 제공하는 서비스에 대한 메타데이터뿐만 아니라 자신이 제공받아야하는 하위 컴포넌트의 서비스에 대한 메타데이터도 스스로 포함하게 하는 부분으로, 컴포넌트 조립 시에 자신이 어떠한 서비스를 제공받아야하는지에 관한 명세를 제공한다.Referring back to FIG. 4, in the component-based method according to the present invention, information about a service call defined in a component internal helper function for assembly with a lower component is generated as component metadata and included in the component. Is expanded (step S14). This metadata information allows the user to include metadata about the services of the subcomponents that he / she should provide as well as metadata about the services he / she already provides. Provide a specification of whether the service should be provided.

여기서, 클라이언트측 메타데이터는 소스코드 컴파일 시에 소스 코드 바이너리 이외의 리소스(Resource)부분이나 닷넷(.Net) 사용자 애트리뷰트(Custom Attribute) 부분 등을 이용하여 컴포넌트 내부에 생성한다. 클라이언트측 메타데이터는 컴포넌트 자체적으로 가지고 있는 메타데이터를 확장시킴으로써 글루 메커니즘 사용하여 두 개의 컴포넌트를 연결하는 중재자(Mediator)를 자동으로 생성하 는 것(단계 S23)이 가능해진다. Here, the client-side metadata is generated inside the component using a resource part other than the source code binary or a .Net user attribute part when the source code is compiled. Client-side metadata extends the metadata that the component itself has, making it possible to automatically create a mediator that connects the two components using the glue mechanism (step S23).

또한, 컴포넌트 구현 시에 생성된 클라이언트측 메타데이터를 그대로 글루 컴포넌트 템플릿을 만드는데 사용하므로, 시스템 조립 시에 생성되는 수많은 글루 컴포넌트와 해당 클래스 혹은 인터페이스의 식별자들을 자동으로 생성함으로써 개발자가 하나하나 고유한 식별자를 만드는 번거로움을 제거한다. In addition, since client-side metadata generated during component implementation is used to create a glue component template as it is, the developer automatically generates identifiers for a number of glue components and corresponding classes or interfaces generated during system assembly. Eliminate the hassle of making.

본 발명의 양호한 실시예로서, 개발하고 있는 컴포넌트를 단독으로 오류 테스트 및 기능 테스트를 수행하기(단계 S15) 위해 서버 컴포넌트와의 연결을 담당하는 글루 컴포넌트를 임시 대체하는 스터브(Stub) 컴포넌트들을 생성한다. As a preferred embodiment of the present invention, stub components are temporarily generated to replace the glue component in charge of connection with the server component in order to perform an error test and a functional test on the component under development alone (step S15). .

컴포넌트 단위 테스트를 위해 컴포넌트가 포함하고 있는 클라이인트측 메타데이터를 사용하여 자신이 호출하는 서버 컴포넌트 ID, 인터페이스 ID, 오퍼레이션 시그너처 등을 만족하는 스터브 컴포넌트의 템플릿을 자동으로 생성하고(단계 S151), 개발자가 서버 컴포넌트로부터 제공받고 싶은 서비스의 리턴값 등을 편집하고(단계 S152), 컴파일 하여 스터브 컴포넌트를 개발하고 스터브 컴포넌트를 호출함으로써 개발한 컴포넌트의 독립적인 오류 및 기능 테스트를 수행한다(단계S153). 스터브 컴포넌트와 리플렉션(Reflection) 등을 이용한 동적 바인딩(Dynamic Blinding) 기법을 이용하여 컴포넌트의 오류 및 기능 검사를 수행함으로써 근본적으로 모든 컴포넌트를 다른 컴포넌트에 독립적으로 개발하고 기능 테스트를 수행할 수 있게 된다. Using the client-side metadata included in the component for component unit testing, a template of the stub component that satisfies the server component ID, interface ID, operation signature, and the like that is called automatically is generated (step S151), and the developer Edits the return value of the service to be provided from the server component (step S152), compiles it, develops the stub component, and performs the independent error and function test of the developed component (step S153). By using dynamic binding techniques such as stub components and reflection, errors and functional checks of components can be performed, thereby essentially developing all components independently of other components and performing functional tests.

도5는 본 발명에 따라 컴포넌트들을 조립하는 방법의 양호한 실시예를 나타낸 도면이다. 도5에 도시된 컴포넌트 조립 과정은 컴포넌트 메시지 흐름을 그래픽 환경에서 커스터마이징하는 단계(단계S21 및 단계S22), 글루 컴포넌트 템플릿을 자동 생성하며 컴포넌트 중재 코드를 편집하는 단계(단계S23), 글루 코드들을 컴파일하여 글루 컴포넌트를 생성하는 단계(단계S24)로 구성되고, 이 단계를 필요한 만큼 반복함으로써 소프트웨어 시스템을 구현하게 된다. 5 shows a preferred embodiment of a method of assembling components in accordance with the present invention. The component assembly process shown in Fig. 5 includes the steps of customizing the component message flow in a graphic environment (steps S21 and S22), automatically generating a glue component template and editing the component arbitration code (step S23), and compiling the glue codes. To generate the glue component (step S24), and repeats this step as necessary to implement the software system.

본 발명에 따른 양호한 실시예로서, 각각의 컴포넌트를 단일 기능을 수행하는 하나의 명령문처럼 다루며, 컴포넌트의 실행순서를 유연하게 배치하기 위해 글루 컴포넌트의 생성 전에 컴포넌트 사이의 메시지 흐름을 커스터마이징하는 단계를 거친다. 시스템 설계 시에 사용하는 순차도(Sequence Diagram)를 그대로 이용한 GUI Tool을 사용하여 조립할 컴포넌트의 인스턴스들을 도면에 배치하고(단계 S21) 이들 중 연결할 클라이언트 컴포넌트와 서버 컴포넌트를 선택하여 컴포넌트 간 메시지 흐름을 설정한다(단계 S22). 컴포넌트 메시지 흐름의 유연한 커스터마이징을 위해 순차도 GUI Tool을 사용하는 것은 컴포넌트 배치와 시계열에 따른 메시지 흐름을 자유롭게 설정할 수 있다는 큰 장점을 가진다. In a preferred embodiment according to the present invention, each component is treated as a single statement that performs a single function, and the steps of customizing the flow of messages between components prior to creation of the glue component in order to flexibly place the order of execution of the components. . Using the GUI tool using the sequence diagram used in system design, place instances of the components to be assembled in the drawing (step S21), and set the message flow between the components by selecting the client component and the server component to be connected among them. (Step S22). Using the sequential GUI Tool for flexible customization of the component message flow has the great advantage of being able to freely set the component flow and message flow according to time series.

또한, 본 발명에서는 두 컴포넌트를 연결하기 위해 클라이언트측의 메타데이터와 서버 컴포넌트 측의 인터페이스에 해당하는 메타데이터를 사용하여 글루 컴포넌트 템플릿을 자동으로 생성하고, 컴포넌트 사이의 시그너처 및 의미론적 불일치 해소를 위한 중재 코드를 삽입하고(단계 S23), 생성 및 삽입된 글루 코드들을 컴파일 함으로써 글루 컴포넌트를 생성한다(단계 S24).In addition, in the present invention, the glue component template is automatically generated using metadata corresponding to the client side metadata and the interface of the server component side to connect the two components, and the signature and semantic inconsistency between the components are solved. The glue component is generated by inserting the arbitration code (step S23) and compiling the generated and inserted glue codes (step S24).

본 발명이 개시하는 이러한 조립 과정을 거침으로써 대규모 시스템을 한번에 조립하지 않고 분할 정복 방법을 적용하여, 여러 개의 순차도를 이용하여 조립 하고 각각을 독립적으로 테스트 한 후 전체적으로 시스템을 통합할 수 있다. 궁극적으로 컴포넌트를 단일 기능을 수행하는 명령문처럼 다루며 순서도를 사용하여 컴포넌트의 실행순서를 유연하게 배치하고 글루 컴포넌트를 손쉽게 구현하도록 하여 대규모 시스템을 정교하면서도 보다 빠르고 신속하게 개발할 수 있게 된다.  By going through this assembly process disclosed by the present invention, it is possible to apply the divisional conquest method without assembling a large-scale system at once, to assemble using several sequential diagrams, test each independently, and then integrate the system as a whole. Ultimately, you treat components as statements that perform a single function, and use flowcharts to flexibly place components in order of execution and to easily implement glue components, enabling you to develop large systems more quickly and quickly.

도6은 본 발명에 따른 컴포넌트간 메시지 전달을 중재하는 글루 컴포넌트를 본 발명에 따른 자동 생성 방법의 일 실시예를 나타내는 일 처리 흐름도이다. 도6을 참조하면, 두 컴포넌트간의 특징 서비스들을 서로 연결하기 위하여, 클라이언트 컴포넌트의 하위 컴포넌트들의 서비스 호출에 관련된 메타데이터를 조사하여(단계 S2311), 개발자에게 클라이언트 컴포넌트가 호출할 서비스 리스트를 보여주고 연결을 원하는 서비스 호출을 선택하는 과정(단계 S2312)과 서버 컴포넌트의 인터페이스에 해당되는 메타데이터를 조사(단계 S2321)하여 개발자에게 서버 컴포넌트가 제공하는 서비스 리스트를 보여주고 호출될 서비스를 선택(단계 S2322)하게 하는 과정을 거친다.6 is a flow diagram illustrating an embodiment of an automatic generation method in accordance with the present invention for a glue component that mediates message transfer between components in accordance with the present invention. Referring to FIG. 6, in order to connect feature services between two components, the metadata related to service invocations of subcomponents of the client component are examined (step S2311), and the developer shows and connects a list of services to be called by the client component. The process of selecting the desired service call (step S2312) and the metadata corresponding to the interface of the server component are examined (step S2321) to show a list of services provided by the server component to the developer and to select the service to be called (step S2322). Go through the process.

또한, 선택된 서비스, 즉 클라이언트 컴포넌트의 선택된 호출에 관한 클라이언트측 메타데이터와 서버 컴포넌트 제공 서비스의 메타데이터를 이용하여 글루 컴포넌트 템플릿 코드를 자동 생성한다(단계 S233). 이 때에, 클라이언트측 메타데이터를 사용하여 원하는 서버 컴포넌트 클래스 혹은 인터페이스의 식별자와 오퍼레이션의 시그너처 등의 정보를 읽어 이 정보와 일치하는 글루 컴포넌트와 인터페이스, 클래스, 그리고 해당 오퍼레이션을 정의해주는 소스코드를 자동으로 생성함으로써 글루 컴포넌트의 템플릿을 자동으로 생성한다. In addition, the glue component template code is automatically generated using the client-side metadata regarding the selected service, that is, the client component metadata regarding the selected invocation of the client component and the server component providing service (step S233). At this time, the client-side metadata is used to read information such as the identifier of the desired server component class or interface and the signature of the operation, and to automatically determine the glue component, interface, class, and source code defining the operation. Creates a template for the glue component automatically.

그 후, 자동으로 생성된 글루 컴포넌트 템플릿 코드에 개발자가 간단한 중재 코드를 삽입함으로써 컴포넌트 간 시그너처의 문법적 정합문제와 매개변수의 의미론적 불일치를 해결하여 두 컴포넌트가 정확하게 통신할 수 있도록 무결성 (Integrity)를 보장하는 중재 코드를 삽입한다(단계 S234). 위와 같이 클라이언트와 서버측 주석과 시그너처를 글루 컴포넌트 템플릿 안에 삽입함으로써 개발자가 중재코드를 작성하는 과정을 매우 용이하게 한다. 또한, 글루 컴포넌트 템플릿을 만들 때 컴포넌트 사이에 주고받는 메시지 내용과 서비스 호출에 소요되는 시간을 로깅(Logging)하는 코드를 자동으로 삽입하고 로깅된 데이터들을 조사함으로써 시스템 통합 테스트를 수행할 수 있다.Then, the developer inserts simple arbitration code into the automatically generated glue component template code to solve the grammatical matching problem and semantic inconsistency of the signature between components so that the two components can communicate correctly. A guaranteed arbitration code is inserted (step S234). By injecting client and server-side annotations and signatures into the glue component template, it is very easy for developers to write arbitration code. In addition, when creating a glue component template, system integration tests can be performed by automatically inserting code to log message contents and time required for service calls between components and inspecting the logged data.

또한, 본 발명의 양호한 실시예로서 컴포넌트 조립과 조립 테스트에 관한 모든 작업을 GUI 환경에서 수행하고 자동으로 글루 컴포넌트의 템플릿과 일부 소스 코드를 자동 생성함으로써, 소스 코드 수정 없이 컴포넌트간의 메시지 흐름을 손쉽게 생성하고 변경할 수 있으며, 복잡하고 시간이 많이 소요되는 컴포넌트 조립 및 테스트 과정을 매우 직관화, 단순화시켜 빠르게 새로운 시스템을 구축하며, 손쉽게 유지 보수할 수 있도록 한다. In addition, as a preferred embodiment of the present invention, by performing all operations related to component assembly and assembly test in a GUI environment and automatically generating a template and some source code of the glue component, it is easy to generate a message flow between components without modifying the source code. It's highly intuitive and simplified to make complex and time-consuming component assembly and testing processes so you can quickly build new systems and easily maintain them.

이하에서는 도7 및 도8을 참조하여 본 발명에 따라 컴포넌트 기반의 소프트웨어 개발 환경을 제공하는 개발 플랫폼의 일 실시예를 상술하기로 한다. 이하 도7 및 도8에서는 바람직한 실시예로서, 마이크로소프트사의 닷넷(.Net) 개발 플랫폼을 예로 하여 설명하고 있으나 반드시 이에 한정하여서는 아니 되며, 다른 개발 플랫폼으로 확장 적용이 물론 가능하다.Hereinafter, an embodiment of a development platform for providing a component-based software development environment according to the present invention will be described in detail with reference to FIGS. 7 and 8. 7 and 8 are described as a preferred embodiment of the .NET (.Net) development platform of Microsoft, but is not necessarily limited to this, it is of course possible to extend to other development platforms.

도7a 내지 도7e는 본 발명에 따라 제공된 GUI에서 클라이언트측 메타데이터를 포함하는 컴포넌트를 구현하는 일 실시예를 순서적으로 나타낸 도면이다. 도7a를 참조하면, 소프트웨어 개발자가 컴포넌트를 구현하는 코드를 생성하던 중에 하위 컴포넌트 서비스가 필요하다고 판단되면(즉, 하위 컴포넌트가 제공하는 메소드를 호출하고자 하면), 서비스가 필요한 부분에 '커서'를 위치시킨다. 여기서, 메소드란 상위 컴포넌트가 호출할 수 있도록 하위 컴포넌트가 접근을 허용하는 함수를 의미한다. 이어서, 프로그램 개발자는 개발 도구 상단의 메뉴 '스마트 바인드 (SmartBind; 712; 클라이언트측 코드 및 메타데이터 생성)'을 클릭한다. 7A-7E are diagrams sequentially illustrating one embodiment of implementing a component that includes client-side metadata in a GUI provided in accordance with the present invention. Referring to FIG. 7A, when a software developer determines that a subcomponent service is needed while generating code for implementing a component (that is, to call a method provided by a subcomponent), a 'cursor' is applied to a portion of the service required. Position it. Here, the method means a function that allows a lower component to access the upper component. The program developer then clicks on the menu 'SmartBind 712 (Generating client-side code and metadata)' at the top of the development tool.

그리고 나면, 본 발명에 따른 개발 도구는 하위 컴포넌트(실제로는 글루 컴포넌트가 된다)를 호출하는데 사용할 아이디(ID)와 메소드 시그너처를 입력받을 대화창(713)을 표시하게 된다. Then, the development tool according to the present invention displays a dialog window 713 for inputting an ID (ID) and a method signature used to call a subcomponent (actually a glue component).

도7b는 본 발명에 따른 컴포넌트 기반의 소프트웨어 개발 도구가 제공하는 글루 컴포넌트 생성용 대화창의 일 실시예를 나타낸 도면이다. 도7b를 참조하면, 대화창(713)에 개발자는 나중에 조립될 하위 컴포넌트가 제공하는 서비스의 시그너처와 상관없이 자기가 원하는 서비스의 시그너처를 입력하게 된다. 도7b를 살펴보면, 반환 형식(Return Type), 메소드 이름, 메소드 주석, 한정자, 매개 변수 형식 및 이름 등이 입력된다. 7B is a diagram illustrating an embodiment of a dialog for generating a glue component provided by a component-based software development tool according to the present invention. Referring to FIG. 7B, the developer inputs a signature of a desired service regardless of the signature of a service provided by a subcomponent to be assembled later. Referring to FIG. 7B, a return type, a method name, a method comment, a qualifier, a parameter type, a name, and the like are input.

도7b에 도시된 대화창(713)을 닫으면 본 발명에 따른 개발 도구는 개발자로부터 입력받은 정보를 바탕으로 해서 조립시 조립 도구에 의해 만들어질 글루 컴포넌트가 제공할 서비스의 아이디와 메소드 시그너처에 대한 클라이언트측 메타데이 터와, 이 글루 컴포넌트 객체를 생성하고 메소드를 호출하는 코드(도7c의 도면부호 715)를 생성하고, 이 코드를 함수화한다. 도7c를 참조하면, 본 발명에 따른 개발 도구는 도7a의 도면부호 711에서 커서를 위치시켰던 자리에 도7b의 도면부호 713에서 생성한 함수를 호출하는 코드를 생성하게 된다.Closing the dialog window 713 shown in FIG. 7B, the development tool according to the present invention based on the information input from the developer, the client side for the ID and method signature of the service to be provided by the glue component to be created by the assembly tool at assembly time. Generate the metadata and the code that creates this glue component object and calls the method (reference numeral 715 in FIG. 7C) and functionalizes this code. Referring to FIG. 7C, the development tool according to the present invention generates a code for calling a function generated at 713 of FIG. 7B at the position where the cursor is positioned at 711 of FIG. 7A.

한편, 도7d에 도시된 바와 같이 본 발명에 따른 개발 도구는 개발중인 컴포넌트가 하위 컴포넌트와 에러 없이 조립되어 동작될 수 있는지를 테스트하기 위해, 하위 컴포넌트와의 조립을 지원하는 글루 컴포넌트 생성 메뉴 버튼(716)을 제공할 수 있다. Meanwhile, as illustrated in FIG. 7D, the development tool according to the present invention uses a glue component generation menu button that supports assembly with subcomponents to test whether a component under development can be assembled and operated without errors. 716).

이어서, 개발자가 도7d의 메뉴 버튼(716)을 클릭하면 본 발명에 따른 개발 도구는 도7c의 도면 부호 715에서 생성된 클라이언트측 메타데이터를 읽어와서 동일한 아이디(ID)와 시그너처를 갖는 글루 컴포넌트를 생성하는 템플릿 코드와 프로젝트 파일을 만든다. Subsequently, when the developer clicks the menu button 716 of FIG. 7D, the development tool according to the present invention reads the client-side metadata generated at 715 of FIG. 7C to generate a glue component having the same ID and signature. Create the template code and project file you create.

한편 도7d의 도면 부호 718은 본 발명에 따라 솔루션 탐색창을 나타낸 도면으로서 스터브 컴포넌트 마법사(717; 테스트를 위해 개발 도구가 만든 임시 글루 컴포넌트)를 만들기 위한 프로젝트 파일들이 나타내 있다. 7D is a diagram illustrating a solution search window according to the present invention showing project files for creating a stub component wizard 717 (a temporary glue component created by a development tool for testing).

도7e는 도7d의 스터브 컴포넌트 마법사(717)가 생성한 스터브 컴포넌트 코드 템플릿을 나타낸 도면으로서, 개발자는 도7e에 나타낸 코드를 수정하여 개발중인 컴포넌트, 즉 하위 컴포넌트가 제공하는 서비스에 의존하는 컴포넌트를 하위 컴포넌트 없이도 개발하고 테스트할 수 있게 된다. FIG. 7E illustrates a stub component code template generated by the stub component wizard 717 of FIG. 7D. The developer modifies the code shown in FIG. 7E to develop a component that is dependent on a service provided by a subcomponent. You can develop and test without subcomponents.

이상 도7a 내지 도7e에서 설명한 과정을 거쳐 개발하고 테스트된 컴포넌트는 상위 컴포넌트에게 제공하는 서비스(메소드)에 대한 서버측 메타데이터(본래의 컴포넌트 플랫폼 기술이 제공함)뿐 아니라, 개발자가 임의로 정한 하위 컴포넌트(실제로는 글루 컴포넌트)가 제공하여야 하는 서비스를 규정한 클라이언트측 메타 데이터를 내포(Embed)하게 된다. The components developed and tested through the processes described with reference to FIGS. 7A to 7E are not only server-side metadata (provided by the original component platform technology) for services (methods) provided to upper components, but also subcomponents arbitrarily determined by developers. Embedding client-side metadata that defines the services that (actually the glue component) should provide.

도8a 내지 도8e는 본 발명에 따라 컴포넌트를 조립하는 과정을 설명하는 개발 도구창을 나타낸 도면이다. 도8a를 참조하면, 개발자는 컴포넌트 조립을 위해 새로운 컴포넌트 조립 프로젝트(811)를 생성한다. 즉, 개발자는 대화창에서 컴포넌트 조립 프로젝트(811)를 선택한다. 이어서, 도8a의 대화 상자를 닫으면 본 발명에 따른 개발 도구는 조립 프로젝트를 위한 파일들을 생성하고, 순차도 형태의 컴포넌트 조립 편집창(812)을 표시하게 된다.8A-8E illustrate a development tool window illustrating a process of assembling components in accordance with the present invention. Referring to FIG. 8A, a developer creates a new component assembly project 811 for component assembly. That is, the developer selects the component assembly project 811 in the dialog. Subsequently, when the dialog box of FIG. 8A is closed, the development tool according to the present invention generates files for the assembly project and displays the component assembly edit window 812 in the form of a flowchart.

도8b에서 도면 부호 813은 생성된 프로젝트의 파일들을 표시하는 솔루션 탐색창을 나타내고 있다. 개발자는 솔루션 탐색창(813)에서 "컴포넌트" 노드를 선택하고(예를 들어, 마우스 우측 버튼을 눌러), 컨텍스트 메뉴를 통해 조립 프로젝트에 조립할 컴포넌트들을 포함시킨다.In FIG. 8B, reference numeral 813 denotes a solution search window that displays files of the generated project. The developer selects a "Component" node in the solution search window 813 (eg, by right clicking) and includes the components to be assembled into the assembly project via a context menu.

도8c는 전술한 도8a 및 도8b의 과정에서 조립 프로젝트에 포함된 컴포넌트들을 보여주고 있는 도면이다. 도8d를 참조하면, 개발 도구에서 순차도를 그리기 위해 제공되는 조립 도구창(814)을 보여주고 있으며, 오브젝트 라이프 라인(815)이 도시되어 있다.FIG. 8C is a diagram illustrating components included in an assembly project in the above-described process of FIGS. 8A and 8B. Referring to FIG. 8D, there is shown an assembly tool window 814, which is provided for drawing a sequence diagram in a development tool, and an object life line 815 is shown.

즉, 개발자가 조립 도구창(814)에서 컴포넌트 도구를 클릭한 채로 마우스 커서를 편집기 창으로 옮겨 버튼을 놓으면(드래그 앤드 드롭 동작), 개발 도구는 순 차도의 오브젝트 라이프 라인을 표시한다. 이어서, 도8e에 도시된 바와 같이 개발자는 컨텍스트 메뉴를 이용하여 프로젝트에 포함된 컴포넌트들 중 하나를 선택하여 오브젝트 라이프 라인과 매핑시킬 수 있다.That is, if the developer moves the mouse cursor to the editor window while releasing the component tool in the assembly tool window 814 and releases the button (drag and drop operation), the development tool displays the object lifeline in the flowchart. Subsequently, as illustrated in FIG. 8E, the developer may select one of the components included in the project and map the object life line using the context menu.

도8f는 컴포넌트가 매핑된 오브젝트 라이프 라인의 속성을 나타내는 대화창을 도시한 도면으로서, 개발 도구는 오브젝트 라이프 라인에 매핑된 컴포넌트의 메타데이터를 읽어 속성창(816)에 표시한다. 즉, 도8f에 도시된 속성창(816)에는 서버 컴포넌트측 메타데이터와 클라이언트측 메타데이터를 읽어 각 메소드의 시그너처 정보를 표시한다.8F illustrates a dialog showing attributes of an object lifeline to which a component is mapped, in which a development tool reads metadata of a component mapped to an object lifeline and displays it in the attribute window 816. That is, the property window 816 shown in Fig. 8F reads the server component side metadata and the client side metadata and displays the signature information of each method.

도8g는 본 발명의 양호한 실시예에 따라 개발자가 그래픽 편집창에 순차도를 완성한 그림을 도시하고 있다. 즉, 각각의 오브젝트 라이프 라인(815)에 컴포넌트들을 매핑시키고, 상위 컴포넌트가 하위 컴포넌트의 메소드를 호출하는 것을 표시하기 위해 메시지(817)로 컴포넌트를 연결한다. 본 발명의 양호한 실시예에 따라, 도8g의 메시지(817)는 두 컴포넌트 사이의 아이디와 시그너처의 불일치를 해소하고, 메소드 호출을 연결시켜 주는 글루 컴포넌트와 매핑된다.Fig. 8G shows a picture of a developer completing a flowchart in a graphic editing window according to a preferred embodiment of the present invention. That is, the components are mapped to each object lifeline 815 and the component is connected with a message 817 to indicate that the parent component invokes the method of the child component. In accordance with a preferred embodiment of the present invention, message 817 of FIG. 8G is mapped to a glue component that resolves the identity and signature mismatch between the two components and links the method call.

도8h는 개발자 편집기에서 메시지를 선택하고 그 속성을 표시하는 대화창을 띄운 모습을 나타낸 도면이다. 도8h의 메시지 속성 대화창(822)은 이 메시지에 연결된 상위 컴포넌트의 클라이언트측 메타데이터(818)를 독출하여 상위 컴포넌트가 호출하는 메소드를 표시하고, 하위 컴포넌트 서버측 메타데이터(819)를 읽어 하위 컴포넌트가 제공하는 서비스 메소드를 표시한다.8h is a diagram showing a dialog box for selecting a message in the developer editor and displaying its properties. The message attribute dialog 822 of Fig. 8H reads the client-side metadata 818 of the parent component connected to this message to display the method called by the parent component, and reads the child component server-side metadata 819 to read the child component. Shows the service methods provided by.

개발자가 상위 컴포넌트의 호출 메소드와, 하위 컴포넌트 피호출 메소드를 선택하고 대화창을 닫으면, 개발 도구는 두 컴포넌트 사이의 메소드 호출을 연결하는 글루 컴포넌트를 만들기 위한 코드와 프로젝트를 생성한다. 도8h에는 상위 컴포넌트가 호출할 메소드 중 해당 메시지(글루 컴포넌트)가 처리하여야 할 메소드를 선택하기 위한 콤보 박스(820)와, 하위 컴포넌트의 피호출 메소드 중 해당 글루 컴포넌트가 처리 연결해야 할 메소드를 선택하기 위한 콤보 박스(821)가 도시되어 있다.When the developer selects the parent component's invocation method and the child component's called method and closes the dialog, the development tool generates code and a project to create a glue component that connects the method invocation between the two components. In FIG. 8H, a combo box 820 for selecting a method to be processed by a corresponding message (glue component) among methods to be called by a parent component, and a method to be processed and connected by the corresponding glue component among called methods of the child component are selected. A combo box 821 is shown.

도8i는 개발 도구가 글루 컴포넌트를 만들기 위한 프로젝트와 글루 코드 켐플릿을 생성한 모습을 나타내고 있는 도면으로서, 개발자가 상위 컴포넌트 호출 메소드와, 하위 컴포넌트 피호출 메소드를 선택하고 대화창을 닫으면, 개발 도구는 상위 컴포넌트의 클라이언트측 메타데이터를 읽어 동일한 ID를 갖는 글루 컴포넌트를 생성하고, 개발자가 선택한 호출 메소드 시그너처와 동일한 시그너처를 갖는 서버 메소드를 구현한 글루 코드를 생성한다. 이어서, 개발 도구는 또한 하위 컴포넌트 서버측 메타데이터를 읽어 위 과정에서 생성된 글루 코드의 메소드 내부에 개발자가 선택한 피호출 메소드 시그너처를 주석으로 표시한다.Fig. 8i shows a development tool generating a project and a glue code template for making a glue component. When the developer selects a parent component calling method and a child component calling method and closes the dialog box, the development tool is opened. The client component metadata of the parent component is read to create a glue component with the same ID, and the glue code implementing the server method having the same signature as the calling method signature selected by the developer is generated. Subsequently, the development tool also reads the subcomponent server-side metadata and annotates the called method signatures of the developer's choices within the methods of the glue code generated in the above process.

도8i를 다시 참조하면, 개발 도구가 두 컴포넌트의 메타데이터를 읽어 자동 생성한 글루 코드(823)와 상위 컴포넌트의 클라이언트측 메타데이터 중 ID 부분을 읽어 그와 동일한 ID를 같은 글루 컴포넌트 코드를 생성하는 코드(824)가 도시되어 있다. 또한, 상위 컴포넌트의 클라이언트측 메타데이터 중 개발자가 선택한 호출 메소드의 시그너처와 동일한 시그너처를 갖는 글루 컴포넌트의 서비스 메소드(825)가 도시되어 있다. 또한, 도8i에는 개발 도구가 생성한 글루 컴포넌트 프로젝트 (826)가 도시되어 있다. Referring back to FIG. 8I, the development tool reads the metadata of the two components and automatically generates the glue component code having the same ID by reading the ID portion of the client-side metadata of the upper component and the glue code 823. Code 824 is shown. Also shown is a service method 825 of the glue component that has the same signature as the signature of the invocation method selected by the developer in the client-side metadata of the parent component. Also shown in FIG. 8I is a glue component project 826 generated by the development tool.

도8j를 참조하면, 가령 개발자가 순차도에 나타난 모든 메시지에 대하여 글루 컴포넌트를 생성하기 위해 편집창으로 두개의 메시지(827, 828)에 대해 각각 글루 컴포넌트 프로젝트(829, 830)가 생성되었음을 알 수 있다.Referring to FIG. 8J, for example, the developer can see that the glue component projects 829 and 830 have been generated for the two messages 827 and 828 in the edit window to generate the glue component for all the messages shown in the flowchart. have.

도8k를 참조하면, 개발자는 두 컴포넌트의 메소드값 시그너처의 구문적/의미론적(Syntactic/Semantic) 불일치를 해소하기 위해 개발 도구가 생성한 글루 코드를 편집할 수 있는데, 개발 도구가 개발자가 중재 코드를 쉽게 만들 수 있도록 하위 컴포넌트의 서버측 메타데이터를 읽어 피호출 메소드의 시그너처를 주석으로 표시한 모습(831)을 도시하고 있다.Referring to FIG. 8K, the developer can edit the glue code generated by the development tool to resolve the syntactic / semantic inconsistency of the method value signatures of the two components. Figure 831 shows the annotation of the signature of the called method by reading the server-side metadata of the subcomponent to make it easy.

또한, 도8k에는 개발자가 두 메소드간 시그너처 불일치를 해소하기 위해 삽입한 중재 코드(832)의 일 예를 도시하고 있다.8K also shows an example of arbitration code 832 inserted by the developer to resolve the signature mismatch between the two methods.

도8l은 개발자가 '빌드' 메뉴를 클릭하면 개발 도구는 생성되고 편집된 글루 코드들을 컴파일 하여 글루 컴포넌트들을 만드는 과정을 나타낸 도면으로서, 전술한 과정을 거쳐 글루 컴포넌트들을 만들고 나면 상위 컴포넌트가 글루 컴포넌트를 호출하게 되고 글루 컴포넌트가 하위 컴포넌트를 호출하게 된다.8L illustrates a process of creating a glue component by compiling the generated and edited glue codes when the developer clicks the 'build' menu. After the glue component is created through the above-described process, the upper component uses the glue component. The glue component will call the subcomponent.

이러한 방법을 통하여 개발자는 소스 코드나 하위 컴포넌트 호출에 대해 상세히 기록한 문서 없이도 독립적으로 개발되고, 호출과 피호출 메소드 시그너처가 정확하게 일치하지 않는 바이너리 형태의(컴파일 된) 컴포넌트들을 매우 빠르고 쉽게 조립하여 연동시킬 수 있게 된다.In this way, developers can independently build and integrate binary (compiled) components that are developed independently, without detailed documentation of source code or subcomponent calls, and whose invocation and called method signatures do not exactly match. It becomes possible.

도8m은 개발 도구가 글루 코드들을 컴파일 해서 글루 컴포넌트들을 만들고 그 결과를 표시한 모습을 나타낸 도면으로서, 이러한 과정을 거쳐 글루 컴포넌트들을 만들고 나면 상위 컴포넌트가 글루 컴포넌트를 호출하게 되고 글루 컴포넌트가 하위 컴포넌트를 호출하게 된다.8m illustrates a development tool compiling glue codes to form glue components and displaying the results. After the glue components are created through this process, the parent component calls the glue component and the glue component calls the child component. Will be called.

이러한 방법을 통하여 개발자는 소스 코드나 하위 컴포넌트 호출에 대해 상세히 기록한 문서 없이도 독립적으로 개발되고, 호출과 피호출 메소드 시그너처가 정확하게 일치하지 않는 바이너리 형태의(컴파일 된) 컴포넌트들을 매우 빠르고 쉽게 조립하여 연동시킬 수 있게 된다.In this way, developers can independently build and integrate binary (compiled) components that are developed independently, without detailed documentation of source code or subcomponent calls, and whose invocation and called method signatures do not exactly match. It becomes possible.

전술한 내용은 후술할 발명의 특허 청구 범위를 보다 잘 이해할 수 있도록 본 발명의 특징과 기술적 장점을 다소 폭 넓게 개설하였다. 본 발명의 특허 청구 범위를 구성하는 부가적인 특징과 장점들은 이하에서 상술될 것이다. 개시된 본 발명의 개념과 특정 실시예는 본 발명과 유사 목적을 수행하기 위한 다른 구조의 설계나 수정의 기본으로 즉시 사용될 수 있음이 당해 기술 분야의 숙련된 사람들에 의해 인식되어야 한다.The foregoing has outlined rather broadly the features and technical advantages of the present invention in order to better understand the claims of the invention which will be described later. Additional features and advantages that make up the claims of the present invention will be described below. It should be appreciated by those skilled in the art that the conception and specific embodiments of the invention disclosed can be readily used as a basis for designing or modifying other structures for carrying out similar purposes to the invention.

또한, 본 발명에서 개시된 발명 개념과 실시예가 본 발명의 동일 목적을 수행하기 위하여 다른 구조로 수정하거나 설계하기 위한 기초로서 당해 기술 분야의 숙련된 사람들에 의해 사용되어질 수 있을 것이다. 또한, 당해 기술 분야의 숙련된 사람에 의한 그와 같은 수정 또는 변경된 등가 구조는 특허 청구 범위에서 기술한 발명의 사상이나 범위를 벗어나지 않는 한도 내에서 다양한 변화, 치환 및 변경이 가능하다.In addition, the inventive concepts and embodiments disclosed herein may be used by those skilled in the art as a basis for modifying or designing other structures for carrying out the same purposes of the present invention. In addition, such modifications or altered equivalent structures by those skilled in the art may be variously changed, substituted, and changed without departing from the spirit or scope of the invention described in the claims.

이상과 같이, 본 발명은 서로 다른 개발자들에 의해 독립적으로 개발되어 서로 다른 시그너처를 지니고 있는 많은 컴포넌트들을 서로 연결하여 재사용하는데 있어서, 서버측 인터페이스 명세 정보뿐 아니라 클라이언트측의 명세 정보를 메타데이터에 포함시킴으로써 다계층 구조의 소프트웨어 개발, 비순차적 조립, 병렬 개발 등을 가능하게 한다. As described above, the present invention includes the client-side specification information as well as the server-side interface specification information in metadata in connection and reusing many components having been independently developed by different developers and having different signatures. This enables multi-tiered software development, out of order assembly, and parallel development.

또한, 본 발명에 따른 컴포넌트 기반의 소프트웨어 개발 방법은 클라이언트측 인터페이스 메타데이터를 각각의 컴포넌트들이 포함하고 있으므로, 스터브 컴포넌트 템플릿을 자동 생성시킬 수 있으며 여기에 적절한 값을 대입하여 컴포넌트 기능을 테스트하는 것이 가능하게 되므로, 하위 컴포넌트에 대해 독립적으로 개발자가 자신이 편한 방식으로 개발을 하여도 하위 컴포넌트를 호출하는 문제가 발생하지 않아, 그 결과 소프트웨어 개발 생산성을 향상시키는 효과가 있다.In addition, in the component-based software development method according to the present invention, since each component includes client-side interface metadata, a stub component template can be automatically generated, and an appropriate value can be substituted to test component function. Therefore, even if the developer develops the subcomponent independently in a way that is convenient for the subcomponent, there is no problem of calling the subcomponent, and as a result, the software development productivity is improved.

본 발명에 따라 구현된 컴포넌트 개발 도구는 컴포넌트 조립을 위한 글루 코드 템플릿을 자동 생성시킬 수 있으며, 조립되어야 할 서버 및 클라이언트측 이질적 컴포넌트 사이에 매개 변수의 문법적 및 의미적 불일치를 중재하는 논리를 삽입함으로써 컴포넌트의 재사용성을 크게 높이며 컴포넌트 조립 과정을 반자동화할 수 있다. 더욱이, 본 발명은 종래 기술과 달리 컴포넌트들 사이의 다층 구조 조립을 가능하게 하므로, 디자인상의 컴포넌트 결합 관계 그대로를 자연스럽게 적용하여 컴포넌트 조립 과정을 수행할 수 있도록 한다.The component development tool implemented according to the present invention can automatically generate glue code templates for component assembly, and by inserting logic to mediate the grammatical and semantic inconsistency of parameters between the server and client-side heterogeneous components to be assembled. It can greatly increase the reusability of components and semi-automate the component assembly process. Furthermore, the present invention enables the assembly of a multilayer structure between components, unlike the prior art, so that the component assembly process can be performed by naturally applying a component coupling relationship in a design.

또한, 본 발명에 따라 개발된 컴포넌트 기반의 소프트웨어는 컴포넌트들 사이에 메소드 호출을 직접 연결하여 동기적으로 처리하므로 불필요한 시스템 부하 또는 네트워크 부하를 경감하는 효과가 있다. 더욱이, 본 발명에 따라 구현된 컴포넌트 개발 도구는 시스템 요구 사항 분석 및 시스템 개념적 디자인 시에 사용되는 시퀀스 다이어그램 형태의 직관적 컴포넌트 조립 도구를 제공하므로, 복잡하고 번거로운 ADL 명세 또는 소스코드 작성 없이도 컴포넌트를 보다 쉽고 저렴하게 조립하고 유지 보수하는 것을 가능하게 한다.In addition, the component-based software developed in accordance with the present invention has the effect of reducing unnecessary system load or network load because the method calls between the components directly connected to the synchronous processing. Moreover, the component development tool implemented according to the present invention provides an intuitive component assembling tool in the form of sequence diagrams used for system requirements analysis and system conceptual design, making it easier and easier to develop components without complicated and cumbersome ADL specification or source code creation. It makes it possible to assemble and maintain inexpensively.

더욱이, 본 발명에 따른 컴포넌트 기반의 소프트웨어 개발 기술을 마이크로소프트사의 닷넷(.NET) 개발 플랫폼에 적용하는 경우, 마이크로소프트사의 기술이 제공하는 커스텀어트리뷰트(CustomAttribute), 리플렉션(Reflection), 코드돔 (CodeDom) 등의 첨단 기술을 응용하여 컴포넌트의 메타데이터를 확장하고, 글루 코드 템플릿을 매우 효율적으로 자동 생성하는 것이 용이하다. 또한, 조립도구를 VSIP Package 형태로 개발함으로써 비주얼 스튜디오(Visual Studio) 사용자 경험이 적용되고, 순차도 형태의 컴포넌트 구조 편집 기능, 인텔리센스(Intelli-Sense)가 적용되는 글루 코드 편집, 소스 레벨 디버깅 등의 첨단 기능을 제공하는 것이 가능하다. Furthermore, when applying the component-based software development technology according to the present invention to Microsoft's .NET development platform, CustomAttribute, Reflection, CodeDom provided by Microsoft's technology It is easy to apply advanced technologies such as) to extend component metadata and to automatically generate glue code templates very efficiently. In addition, by developing assembly tools in the form of VSIP Package, the Visual Studio user experience is applied, the component structure editing function in the form of sequential, glue code editing with IntelliSense, source level debugging, etc. It is possible to provide its advanced features.

현재의 컴포넌트 유통 시장에서는 주로 GUI 용 컴포넌트들이 유통되고 있으며, 비즈니스 논리를 구현한 컴포넌트는 종류도 다양하지 못할 뿐 아니라, 계층구조 형태의 조립 기술 부재로 인해 매우 큰 입자(Coarse-Grained) 형태의 일반성이 떨어지는 컴포넌트만 존재하는 반면에, 본 발명에 따른 액티브 바인딩 기술은 효율적이고 독립적인 컴포넌트 개발과 테스트 기능을 제공하고, 설계와 일치하는 다계층 조립을 가능케 하는 클라이언트측 인터페이스 명세를 제공하므로, 적절한 일반 성(Generality)을 가지는 작은 규모의(Finer-Grained), 재사용 가능한 비즈니스 논리 영역 컴포넌트 개발을 장려하고, 그들의 유통 시장을 창출할 수 있게 해주는 효과가 있다. In the current component distribution market, GUI components are mainly distributed, and the component that implements business logic is not only diverse, but also very large particle-grained generality due to the lack of hierarchical assembly technology. While only these falling components exist, the active binding technology in accordance with the present invention provides efficient and independent component development and test functionality, and provides a client-side interface specification that enables multi-layer assembly to match the design, thus providing appropriate generalization. It has the effect of encouraging the development of fine-grained, reusable business logic domain components of generality and creating their distribution markets.

또한, 본 발명에 따른 액티브 바인딩 기술은, 바이너리 컴포넌트들을 다계층 구조로 조립할 수 있게 함으로써, 설계와 구현을 일치시키고, 로컬에서 동작하도록 만들어진 컴포넌트를 네트워크 상에 분산 배치하고, 원격에서 동작할 수 있게 하는 원격 호스팅 기능을 제공한다. 따라서, 제3자가 만든 바이너리 컴포넌트를 시장에서 저렴한 가격으로 구입하여, 대규모 다계층 분산 시스템을 구축하는 것이 가능해진다.In addition, the active binding technology according to the present invention enables the assembly of binary components into a multi-layered structure, thereby matching design and implementation, distributing components designed to operate locally on a network, and operating remotely. To provide remote hosting capabilities. Therefore, it is possible to purchase binary components made by third parties at a low price in the market and to build a large-scale multi-layer distributed system.

더욱이, 본 발명에 따른 액티브 바인딩 기술이 제공하는 순차도(Sequence Diagram) 형태의 편집기는 컴포넌트 조립을 시계열의 메소드 호출단위로 세밀하게 시각화 해주고, 글루 코드 당 단일한 메소드 호출 중재만을 담당하게 함으로써 조립 작업을 정밀하고 간단하게 해준다. 또한, 마이크로소프트사의 비주얼 스튜디오에 액티브 바인딩 기술을 결합시키면 자동 생성된 글루 코드 템플릿에 대하여 인텔리센스(Intelli-Sense)와 소스 수준 디버깅 기능을 제공할 수 있어 소프트웨어 개발 생산성을 극대화한다.Furthermore, the editor in the form of a sequence diagram provided by the active binding technology according to the present invention visualizes the assembly of components in a method call unit of time series, and takes care of assembling a single method call per glue code. It makes it precise and simple. The combination of Microsoft's Visual Studio with active binding technology also provides Intelli-Sense and source-level debugging capabilities for auto-generated glue code templates, maximizing software development productivity.

본 발명에 따른 액티브 바인딩 기술을 마이크로소프트사의 최신 통합 개발 도구인 비주얼 스튜디오 닷넷 2003 (Visual Studio .NET 2003)에 완전히 통합하여, 사용자가 지니고 있는 비주얼 스튜디오 경험을 그대로 적용함으로써 쉽고 빠르게 본 발명에 따른 컴포넌트 개발 기술을 적용하는 것도 가능하다. The active binding technology according to the present invention is fully integrated with Microsoft's latest integrated development tool, Visual Studio .NET 2003, and the component according to the present invention can be quickly and easily applied by applying the user's visual studio experience as it is. It is also possible to apply development techniques.                     

본 발명에 따른 액티브 바인딩 기술은 메소드 수준의 세밀한 조립 구조의 시각화와 조립에 필요한 충분한 수준의 메타데이터를 제공함으로써, 별도의 추가적인 문서화 작업 없이도 개발자가 아닌 제3자에 의한 시스템 변경을 가능하게 해준다. 따라서, 시스템 사용자는 종래의 경우와는 달리 문서화 비용과 독점적 유지 보수 계약으로 인한 비용을 절감할 수 있다.The active binding technology according to the present invention provides a sufficient level of metadata for assembly and visualization of method-level granular assembly structures, enabling system changes by third parties rather than developers without additional documentation. Thus, the system user can reduce the cost of documentation and the exclusive maintenance contract, unlike the conventional case.

Claims (22)

컴포넌트 기반 소프트웨어를 개발하는 방법에 있어서, 독립적으로 개발된 컴포넌트가 다계층 구조를 가지는 새로운 소프트웨어의 개발에서 바이너리 형태로 재사용될 수 있게 하기 위하여 컴포넌트 메타데이터를 클라이언트측 호출 명세 정보까지 포함하도록 확장하는 컴포넌트 개발 방법은In the method of developing component-based software, a component that extends the component metadata to include client-side call specification information so that independently developed components can be reused in binary form in the development of new software having a multi-layered structure. Development method (a) 개발 중인 컴포넌트가 클라이언트로서 하위(서버) 컴포넌트 메소드를 호출할 필요가 있을 때, 메소드 시그너처 입력 처리 수단이 상기 메소드 대한 임의의 시그너처와 주석을 개발자로부터 입력받는 단계와; (a) when the component under development needs to call a lower (server) component method as a client, the method signature input processing means receives an arbitrary signature and annotation for the method from the developer; (b) 헬퍼 함수(helper function) 생성 처리 수단이 상기 단계 (a)에서 입력받은 메소드 시그너처를 기반으로, 차후 컴포넌트 조립을 통해 개발된 소프트웨어가 실행될 때 상기 서버 컴포넌트 메소드의 호출을 중재하는 글루 컴포넌트 메소드를 동적으로 호출해 줄 헬퍼 함수 코드를 생성하는 단계와; (b) a glue component method that mediates the invocation of the server component method when the helper function generation processing means executes the software developed through component assembly in the future based on the method signature input in step (a). Generating helper function code for dynamically calling; (c) 상기 헬퍼 함수 생성 처리 수단이 개발 중인 컴포넌트의 상기 서버 컴포넌트 메소드의 호출이 필요한 부분에 상기 헬퍼 함수를 호출하는 코드를 삽입하는 단계와; (c) inserting code for calling the helper function in a portion where the helper function generation processing means needs to call the server component method of the component under development; (d) 메타데이터 생성 처리 수단이 상기 단계 (a)에서 입력받은 메소드 시그너처를 기반으로 클라이언트측 메타데이터를 생성하고, 이를 개발 중인 컴포넌트 내에 포함시키는 단계; (d) the metadata generating processing means generating the client-side metadata based on the method signature input in the step (a) and including it in the component under development; 를 포함하는 것을 특징으로 하는 소프트웨어 개발 방법.Software development method comprising a. 제1항에 있어서, 상기 단계 (d)는,The method of claim 1, wherein step (d) 상기 메타데이터 생성 처리 수단이 상기 클라이언트측 메타데이터를 사용자 속성(Custom Attributes) 형태로 생성하고, 이를 개발 중인 컴포넌트에 포함시키는 것을 특징으로 하는 소프트웨어 개발 방법.And the metadata generation processing means generates the client-side metadata in the form of user attributes and includes it in a component under development. 제1항에 있어서, 상기 단계 (d)는,The method of claim 1, wherein step (d) 상기 메타데이터 생성 처리 수단이 글루 컴포넌트 식별자(아이디), 클래스 식별자, 인터페이스 식별자를 임의로 생성하여, 상기 단계 (a)에서 입력받은 메소드 시그너처와 함께 클라이언트측 메타데이터로 만드는 것을 특징으로 하는 소프트웨어 개발 방법.And the metadata generation processing means arbitrarily generates a glue component identifier (ID), a class identifier, and an interface identifier, and generates client-side metadata along with the method signature input in the step (a). 제1항에 있어서, 상기 컴포넌트 개발 방법은,According to claim 1, The component development method, (e) 개발 중인 컴포넌트에 포함된 클라이언트측 메타데이터를 스터브(간이) 컴포넌트 생성 처리 수단이 독출하여 가상의 하위 컴포넌트에 대응하는 스터브 컴포넌트 템플릿 코드를 생성함으로써, 개발자가 이를 활용하여 실제 하위 컴포넌트 없이도 상기 개발 중인 컴포넌트를 독립적으로 테스트할 수 있도록 하는 단계; (e) The stub (simple) component generation processing means reads the client-side metadata included in the component under development and generates stub component template code corresponding to the virtual subcomponent. Allowing independent testing of the component under development; 를 더 포함하는 것을 특징으로 하는 소프트웨어 개발 방법.Software development method comprising a further. 컴포넌트 기반 소프트웨어를 개발하는 방법에 있어서, 제1항의 방식에 따라 다양한 개발자들에 의해 독립적으로 개발된 컴포넌트들을 재사용하여 다계층 구조의 소프트웨어를 개발하기 위한 컴포넌트 조립 방법은In the method of developing component-based software, the component assembly method for developing a multi-layered software by reusing components independently developed by various developers according to the method of claim 1 (a) 컴포넌트 배치 처리 수단이 개발자에게 조립될 컴포넌트들을 그래픽 도구 화면에 배치하게 하는 단계와; (a) causing the component placement processing means to arrange the components to be assembled on the graphical tool screen; (b) 컴포넌트 메시지 흐름(호출 관계) 설정 처리 수단이 개발자에게 상기 그래픽 도구에서 상기 컴포넌트들에 대해 클라이언트와 서버로서 컴포넌트 간 메시지 흐름을 설정하도록 하는 단계와; (b) a component message flow (call relationship) setting processing means for causing a developer to establish a message flow between components as a client and a server for the components in the graphical tool; (c) 글루 컴포넌트 템플릿 코드 생성 처리 수단이 상기 단계 (b)에서 설정된 메시지 흐름을 중재할 글루 컴포넌트 템플릿을 자동 생성하는 단계와 (c) the glue component template code generating means automatically generating a glue component template to mediate the message flow set in step (b); (c1) 클라이언트 컴포넌트의 클라이언트측 메타데이터를 독출하여 개발자에게 클라이언트 컴포넌트가 호출할 수 있는 메소드 리스트를 보여주고 그 중 하나를 선택하게 하는 하위 단계; (c1) reading the client-side metadata of the client component to show the developer a list of methods that the client component can call and to select one of them; (c2) 서버 컴포넌트의 서버측 메타데이터를 독출하여 개발자에게 서버 컴포넌트가 제공하는 메소드 리스트를 보여주고 호출될 메소드를 선택하게 하는 하위 단계; (c2) reading the server-side metadata of the server component to show the developer a method list provided by the server component and to select a method to be called; (c3) 상기 하위 단계 (c1)에서 선택된 클라이언트측 메타데이터 중에서 식별자 부분을 읽어 동일한 식별자를 갖는 글루 컴포넌트, 인터페이스, 클래스를 생성하는 하위 단계; (c3) a substep of reading an identifier part of the client-side metadata selected in the substep (c1) to generate a glue component, an interface, and a class having the same identifier; (c4) 상기 하위 단계 (c1)에서 선택된 클라이언트측 메타데이터 중에서 메소드 시그너처를 읽어 상기 단계 (c3)에서 생성된 클래스 내에 동일한 시그너처를 갖는 메소드를 생성하는 하위 단계; (c4) a substep of reading a method signature from among client-side metadata selected in the substep (c1) and generating a method having the same signature in the class generated in the step (c3); (c5) 상기 하위 단계 (c2)에서 선택된 서버측 메타데이터를 읽어 서버 컴포넌트의 인스턴스를 생성하는 코드를 생성하여 상기 하위 단계 (c4)에서 생성된 메소드 내부에 삽입하는 하위 단계; (c5) a substep of reading the server-side metadata selected in the substep (c2), generating code for creating an instance of the server component, and inserting the code into the method generated in the substep (c4); (d) 글루 컴포넌트 생성 처리 수단이 상기 단계 (c)에서 생성된 글루 컴포넌트 코드를 컴파일하여 글루 컴포넌트를 생성하는 단계와; (d) the glue component generation processing means generating a glue component by compiling the glue component code generated in the step (c); (e) 상기 수단들이 개발자에게 상기 단계 (a) 내지 상기 단계 (d)의 컴포넌트 조립 과정을 필요한 만큼 반복하여 다계층 구조의 소프트웨어를 개발할 수 있게 하는 단계; (e) the means allowing the developer to repeat the component assembly process of steps (a) to (d) as necessary to develop a multi-layered software; 를 포함하는 것을 특징으로 하는 소프트웨어 개발 방법.Software development method comprising a. 제5항에 있어서, 상기 단계 (c)는,The method of claim 5, wherein step (c) comprises: (c6) 상기 글루 컴포넌트 템플릿 코드 생성 처리 수단이 상기 하위 단계 (c1)에서 선택된 클라이언트측 메소드의 시그너처와 상기 하위 단계 (c2)에서 선택된 서버 컴포넌트측 메소드의 시그너처를 대조하여 이들이 서로 일치하지 않을 경우 개발자로부터 중재 코드를 입력받아 상기 글루 컴포넌트 템플릿 코드에 삽입하는 하위 단계 (c6) the glue component template code generation processing means checks the signature of the client-side method selected in the substep (c1) and the signature of the server component-side method selected in the substep (c2), and if they do not coincide with each other, Sub-step of receiving an arbitration code from the glue component template code 를 더 포함하는 소프트웨어 개발 방법.Software development method further comprising. 컴포넌트 기반 소프트웨어를 개발하는 시스템에 있어서, 제1항의 컴포넌트 개발 방법에 따른 컴포넌트 개발 장치는In the system for developing component-based software, the component development apparatus according to the component development method of claim 1 (a) 개발 중인 컴포넌트가 클라이언트로서 하위(서버) 컴포넌트 메소드를 호출할 필요가 있을 때, 상기 메소드에 대한 개발자 임의의 시그너처와 주석을 대화창을 통해 입력받는 모듈 장치와; (a) a module device which receives a developer's arbitrary signature and annotation on the method through a dialog when the component under development needs to call a lower (server) component method as a client; (b) 상기 모듈 장치 (a)가 입력받은 시그너처를 기반으로, 차후 컴포넌트 조립을 통해 개발된 소프트웨어가 실행될 때 상기 서버 컴포넌트 메소드의 호출을 중재하는 글루 컴포넌트 메소드를 동적으로 호출해 줄 헬퍼 함수 코드를 생성하고, 상기 서버 컴포넌트 메소드의 호출이 필요한 부분에 상기 헬퍼 함수를 호출하는 코드를 삽입해주는 모듈 장치와; (b) based on the signature input from the module device (a), the helper function code for dynamically calling the glue component method which mediates the call of the server component method when the software developed by the component assembly is executed later A module device for generating and inserting code for calling the helper function in a portion in which the server component method needs to be called; (c) 상기 모듈 장치 (a)가 입력받은 시그너처를 기반으로 클라이언트측 메타데이터를 생성하고 이를 개발 중인 컴포넌트 내에 포함시키는 모듈 장치; (c) a module device for generating client-side metadata based on the signature input by the module device (a) and including it in a component under development; 를 포함하는 것을 특징으로 하는 소프트웨어 개발 시스템.Software development system comprising a. 제7항에 있어서, 상기 컴포넌트 개발 장치는,The method of claim 7, wherein the component development apparatus, (d) 개발 중인 컴포넌트의 클라이언트측 메타데이터를 독출하여 시험용 스터브 컴포넌트 템플릿을 생성함으로써, 상기 개발 중인 컴포넌트가 하위 컴포넌트와 연결되어 정상적으로 작동할 수 있는지를 실제 하위 컴포넌트 없이 독립적으로 테스트할 수 있게 하는 모듈 장치; (d) A module that reads the client-side metadata of the component under development and generates a test stub component template to independently test whether the component under development can be connected to the subcomponent and operate normally without the actual subcomponent. Device; 를 더 포함하는 소프트웨어 개발 시스템.Software development system further comprising. 컴포넌트 기반 소프트웨어를 개발하는 시스템에 있어서, 제5항의 컴포넌트 조립 방법에 따른 컴포넌트 조립 장치는In the system for developing component-based software, the component assembly apparatus according to the component assembly method of claim 5 (a) 조립될 컴포넌트들을 그래픽 화면에 배치하는 모듈 장치와; (a) a module device for arranging components to be assembled on a graphic screen; (b) 상기 모듈 장치 (a)에 배치된 상기 컴포넌트들에 대해 클라이언트와 서버로서 컴포넌트 간 메시지 흐름을 조립도구창에서 시각적으로 설정할 수 있게 하는 모듈 장치와; (b) a module device for visually establishing a message flow between components as a client and a server in the assembly tool window for the components arranged in the module device (a); (c) 상기 모듈 장치 (b)에 의해 설정된 메시지 흐름을 중재할 글루 컴포넌트 코드를 생성하는 모듈 장치와 <여기서 본 모듈 장치 (c)는 다음 서브 모듈 장치 (c1) 내지 서브 모듈 장치 (c3)를 포함함.>; (c) a module device for generating a glue component code to mediate the message flow established by said module device (b), and wherein said module device (c) comprises the following sub-module devices (c1) to (c3): Contains.>; (c1) 클라이언트 컴포넌트의 클라이언트측 메타데이터를 독출하여 개발자에게 클라이언트 컴포넌트가 호출할 수 있는 메소드 리스트를 보여주고 그 중 하나를 선택하게 하는 서브 모듈 장치; (c1) a submodule apparatus that reads client-side metadata of the client component to show a developer a list of methods that the client component can call and select one of them; (c2) 서버 컴포넌트의 서버측 메타데이터를 독출하여 개발자에게 서버 컴포넌트가 제공하는 메소드 리스트를 보여주고 호출될 메소드를 선택하게 하는 서브 모듈 장치; (c2) a submodule apparatus that reads server-side metadata of a server component to show a list of methods provided by the server component to a developer and select a method to be called; (c3) 상기 서브 모듈 장치 (c1)에 의해 선택된 클라이언트측 메소드와 상기 서브 모듈 장치 (c2)에 의해 선택된 서버측 메소드에 대한 메타데이터를 이용하여 글루 컴포넌트 템플릿 코드를 생성하는 서브 모듈 장치; (c3) a submodule apparatus for generating a glue component template code using metadata for the client-side method selected by the submodule apparatus (c1) and the server-side method selected by the submodule apparatus (c2); (d) 상기 모듈 장치 (c)에 의해 생성된 글루 컴포넌트 코드들을 컴파일하여 컴포넌트 조립을 완성하는 모듈 장치; (d) a module device for compiling glue component codes generated by the module device (c) to complete component assembly; 를 포함하는 것을 특징으로 하는 소프트웨어 개발 시스템.Software development system comprising a. 제9항에 있어서, 상기 모듈 장치 (b)는,The method according to claim 9, wherein the module device (b), 상기 컴포넌트 배치와 상기 컴포넌트 간 메시지 흐름 설정을 순차도(Sequence Diagram) 형태로 표현할 수 있도록 하는 것을 특징으로 하는 소프트웨어 개발 시스템.The software development system, characterized in that the component arrangement and the message flow setting between the components can be expressed in the form of a sequence diagram. 제9항에 있어서, 상기 서브 모듈 장치 (c3)는,The method of claim 9, wherein the sub module device (c3), 상기 클라이언트측 메소드와 상기 서버측 메소드에 대한 시그너처와 주석을 상기 글루 컴포넌트 템플릿 코드에 주석으로 삽입함으로써, 필요시 개발자가 중재 코드를 용이하게 작성할 수 있도록 하는 것을 특징으로 하는 소프트웨어 개발 시스템.And inserting signatures and annotations for the client-side and server-side methods as annotations into the glue component template code, so that developers can easily write the arbitration code if necessary. 제9항에 있어서, 상기 서브 모듈 장치 (c3)는,The method of claim 9, wherein the sub module device (c3), 클라이언트 컴포넌트가 서버 컴포넌트 메소드를 호출할 때 전달되는 매개 변수 값들과 리턴 값, 소요 시간 등을 기록하는(Logging) 코드를 생성하여 상기 글루 컴포넌트 템플릿에 삽입함으로써, 개발 중인 소프트웨어의 기능 테스트에 상기 기록을 이용할 수 있도록 하는 것을 특징으로 하는 소프트웨어 개발 시스템.Generates and logs code to record the parameter values, return values, time required, etc., when the client component invokes a server component method, into the glue component template, thereby recording the record in the functional test of the software under development. A software development system characterized by being made available. 제9항에 있어서, 상기 모듈 장치 (c)는,The method of claim 9, wherein the module device (c) is (c4) 상기 서브 모듈 장치 (c1)에 의해 선택된 클라이언트측 메소드의 시그너처와 상기 서브 모듈 장치 (c2)에 의해 선택된 서버 컴포넌트측 메소드의 시그너처를 대조하여 이들이 서로 일치하지 않을 경우 개발자로부터 중재 코드를 입력받아 상기 글루 컴포넌트 템플릿 코드에 삽입하는 서브 모듈 장치; (c4) compares the signature of the client-side method selected by the submodule apparatus (c1) with the signature of the server component-side method selected by the submodule apparatus (c2) and inputs an arbitration code from the developer if they do not match with each other; A sub module device to receive and insert the glue component template code; 를 더 포함하는 것을 특징으로 하는 소프트웨어 개발 시스템.Software development system further comprises. 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete
KR1020040033449A 2003-05-12 2004-05-12 Method and system of developing a software with utilizing extended metadata of component under component-based development environment KR100697246B1 (en)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2006507841A JP2006526209A (en) 2003-05-12 2004-05-12 Software development method and development system using metadata extended under component-based environment
US10/546,805 US20070150855A1 (en) 2003-05-12 2004-05-12 Method and system of developing a software with utilizing extended metadata of component under component-based development environment
PCT/KR2004/001099 WO2004099896A2 (en) 2003-05-12 2004-05-12 Method and system of developing a software with utilizing extented metadata of component under component-based development environment
JP2009102299A JP2009238230A (en) 2003-05-12 2009-04-20 Software development method using metadata expanded under component base environment and its development system
JP2009102295A JP2009238229A (en) 2003-05-12 2009-04-20 Software development method using metadata expanded under component base environment and its development system
JP2009102297A JP2009245441A (en) 2003-05-12 2009-04-20 Software development method using metadata expanded under component board environment, and its development system
JP2009102300A JP2009238231A (en) 2003-05-12 2009-04-20 Software development method using metadata expanded under component base environment and its development system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020030029704A KR20030044959A (en) 2003-05-12 2003-05-12 A Method for Implementing and Assembling Software Components using Client-Side Metadata and Glue Codes
KR1020030029704 2003-05-12

Publications (2)

Publication Number Publication Date
KR20040097941A KR20040097941A (en) 2004-11-18
KR100697246B1 true KR100697246B1 (en) 2007-03-21

Family

ID=29579678

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020030029704A KR20030044959A (en) 2003-05-12 2003-05-12 A Method for Implementing and Assembling Software Components using Client-Side Metadata and Glue Codes
KR1020040033449A KR100697246B1 (en) 2003-05-12 2004-05-12 Method and system of developing a software with utilizing extended metadata of component under component-based development environment

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020030029704A KR20030044959A (en) 2003-05-12 2003-05-12 A Method for Implementing and Assembling Software Components using Client-Side Metadata and Glue Codes

Country Status (2)

Country Link
JP (4) JP2009238231A (en)
KR (2) KR20030044959A (en)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060070611A (en) * 2004-12-21 2006-06-26 한국전자통신연구원 Asset and product creation device and method using product line analysis
US7895575B2 (en) 2005-08-19 2011-02-22 Electronics And Telecommunications Research Institute Apparatus and method for generating test driver
KR100777103B1 (en) * 2005-08-19 2007-11-19 한국전자통신연구원 Apparatus and method for generation of test driver
KR100791303B1 (en) * 2006-08-22 2008-01-04 삼성전자주식회사 Apparatus and method for making component of build block
KR100860963B1 (en) * 2007-03-08 2008-09-30 삼성전자주식회사 Apparatus and method for developing software based on component
KR100828302B1 (en) * 2007-11-07 2008-05-08 정안모 A Method for Software Development and Operation Based on Component Reuse and Dependency Injection
KR100884435B1 (en) * 2007-12-05 2009-02-19 정안모 A Method for Decoupling Service Components from Application-Specific Business Entities
KR101470319B1 (en) 2008-02-15 2014-12-08 삼성전자주식회사 Method and apparatus for generating virtual software platform based on component model and validating software platform architecture using thereof
KR100887105B1 (en) * 2008-09-09 2009-03-04 김진만 Method for implementing .net component for controlling peripheral device in indutrial embeded controller loaded windows ce
US9158504B2 (en) 2012-10-12 2015-10-13 Baker Hughes Incorporated Method and system to automatically generate use case sequence diagrams and class diagrams
US11244090B2 (en) 2016-06-01 2022-02-08 The Mathworks, Inc. Systems and methods for extracting adjustable attributes of model components
CN109933326B (en) * 2017-12-15 2023-03-17 北京奇虎科技有限公司 Compiling method and device for rewriting codes and corresponding terminal
CN115082058B (en) * 2022-07-25 2022-11-18 上海富友支付服务股份有限公司 Virtual account transaction management method and system based on dynamic control

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030056654A (en) * 2001-12-28 2003-07-04 한국전자통신연구원 Method and apparatus for enterprise jababeans components assembly

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08314702A (en) * 1995-05-19 1996-11-29 Nec Corp Visual programming system and graphic program editing method
JPH09120357A (en) * 1995-10-26 1997-05-06 Hitachi Ltd Object-oriented application production method
JPH11353168A (en) * 1998-06-10 1999-12-24 Nippon Telegr & Teleph Corp <Ntt> Interface matching method and recording medium where interface matching program is recorded
JP2000089944A (en) * 1998-07-15 2000-03-31 Hitachi Software Eng Co Ltd Method for displaying connection guide marker, system therefor and recording medium

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030056654A (en) * 2001-12-28 2003-07-04 한국전자통신연구원 Method and apparatus for enterprise jababeans components assembly

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
1020030056654 *

Also Published As

Publication number Publication date
JP2009238231A (en) 2009-10-15
KR20030044959A (en) 2003-06-09
JP2009238230A (en) 2009-10-15
KR20040097941A (en) 2004-11-18
JP2009238229A (en) 2009-10-15
JP2009245441A (en) 2009-10-22

Similar Documents

Publication Publication Date Title
Cook et al. Domain-specific development with visual studio dsl tools
JP2006526209A (en) Software development method and development system using metadata extended under component-based environment
US7120896B2 (en) Integrated business process modeling environment and models created thereby
JP2009245441A (en) Software development method using metadata expanded under component board environment, and its development system
Sorgalla et al. Applying model-driven engineering to stimulate the adoption of devops processes in small and medium-sized development organizations: the case for microservice architecture
Medvidovic Architecture-based specification-time software evolution
Volgyesi et al. Component-based development of networked embedded applications
Leroy et al. Behavioral interfaces for executable DSLs
Luer et al. Composition environments for deployable software components
Merilinna A tool for quality-driven architecture model transformation
Buchgeher et al. Connecting architecture and implementation
Truyen et al. On interaction refinement in middleware
Husu Software factories
KR101061326B1 (en) Application Server Development System
Kozaczynski et al. Architecture specification support for component integration
Tang A software synthesis methodology for developing component-based applications
EP1638022A2 (en) System and method for developing portal applications and automatically deploying them into a portal server application
Moschoyiannis Specification and analysis of component-based software in a concurrent setting
Mani Studying the Performance Impact of SOA Design Patterns via Coupled Model Transformations
Eixelsberger Software Architecture Recovery of Product Lines
Cano et al. OSGi services design process using model driven architecture
Cano et al. OSGi services design using Model Driven Architecture
Medvidovic in Information and Computer Science
Gu Tool Integration: Model-based Tool Adapter Construction and Discovery Conforming to OSLC
Kell Configuration and adaptation of binary software components

Legal Events

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

Payment date: 20120312

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee