KR20040097941A - Method and system of developing a software with utilizing metadata of the client-side component under component-based development environment - Google Patents

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

Info

Publication number
KR20040097941A
KR20040097941A KR1020040033449A KR20040033449A KR20040097941A KR 20040097941 A KR20040097941 A KR 20040097941A KR 1020040033449 A KR1020040033449 A KR 1020040033449A KR 20040033449 A KR20040033449 A KR 20040033449A KR 20040097941 A KR20040097941 A KR 20040097941A
Authority
KR
South Korea
Prior art keywords
component
components
client
glue
metadata
Prior art date
Application number
KR1020040033449A
Other languages
Korean (ko)
Other versions
KR100697246B1 (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 PCT/KR2004/001099 priority Critical patent/WO2004099896A2/en
Priority to JP2006507841A priority patent/JP2006526209A/en
Priority to US10/546,805 priority patent/US20070150855A1/en
Publication of KR20040097941A publication Critical patent/KR20040097941A/en
Application granted granted Critical
Publication of KR100697246B1 publication Critical patent/KR100697246B1/en
Priority to JP2009102297A priority patent/JP2009245441A/en
Priority to JP2009102300A priority patent/JP2009238231A/en
Priority to JP2009102299A priority patent/JP2009238230A/en
Priority to JP2009102295A priority patent/JP2009238229A/en

Links

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

PURPOSE: A method and a system for developing software using metadata under a component based environment are provided to enhance reuse of components and flexibly control a message flow between components without correcting component codes by overcoming syntactic/semantic matching problems of a signature severely needed for combination between components. CONSTITUTION: To flexibly control the message flow, a client component(310) requesting a specified function service combining both components by implementing the metadata(311) describing that a server component(320) uses the service having which signature, and a glue component(330), which is a mediator applying a glue concept using the metadata(312) corresponding to a use contracted interface for using the service of the server component. As the glue component dynamically controls the message flow by having call information, both components call or are called from each other even if both components have the call information of an opposite side.

Description

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

본 발명은 컴포넌트 기반 소프트웨어 개발(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 relates to a method of developing software assembled with each other, a new component metadata format, a development tool for implementing the same, and a development environment system.

더욱 상세하게는, 본 발명은 기존의 컴포넌트가 제공하는 서비스 피호출 규격에 관한 서버측(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, with the advent of embedded systems and ubiquitous computing, the demand for various softwares has soared and changes are frequently required for 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, exhibit limitations in improving software development productivity, Unlike the method, 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 a 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 technology does not include client-side information about service invocations provided by subcomponents in the metadata provided at the time of deployment, so that if a component to be reused depends on another 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 a GUI (Graphic User Interface) providing a simple and independent service, and the reuse rate of components in the business logic domain, which is a 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 burden on the network and the 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 separately in two notation formats: IDN: Component Interface Definition Notation) and Architecture Definition Notation (ADN).

무엇보다도, 종래 기술에 따른 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 a disadvantage of incurring a lot of unnecessary interrupts and message identification processing, which adds to the system burden because all interactions between components always occur through the broadcasting and checking of 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 목적은 상기 목적들에 부가하여, 컴포넌트의 분산 배치 및 원격 호스팅을 가능하게 하고, 조립된 컴포넌트를 통합 테스트하고 모니터링하는 것을 가능하게 하는 컴포넌트 기반의 소프트웨어 개발 디바이스, 시스템 및 방법을 제공하는데 있다.In addition to the above objects, a fourth object of the present invention is to provide a component-based software development device, system and method which 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.

도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

상기 목적을 달성하기 위하여, 본 발명은 컴포넌트 기반 개발 방법의 컴포넌트 구현과 조립에 있어서, 컴포넌트 개발자로부터 호출하고자 하는 하위 컴포넌트의 서비스의 시그너처와 주석을 임의로 입력받는 처리수단; 입력받은 시그너처를 기반으로, 글루 컴포넌트의 서비스를 동적으로 바인딩하고(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 lower 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 making a temporary glue component for test, and processing means for selecting and arranging components to be assembled using a GUI tool 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 can automatically generate a template of a glue component, which is an arbitration component for assembling a component, thereby 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 the subcomponent to call (component ID = component X, interface ID = x1 (), and the operation signature). Field information by constructing metadata 311 and including it in a component so that the metadata 311 is used to satisfy an attribute defined in the metadata (component ID = component X, interface ID = x1 ( ), Create a glue component with the called operation and the signature with the same operation, and check in the server component B 320 within the glue component. 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 annotation of a service that should be provided from a lower component 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), create a temporary glue component for testing and test the independent component function It consists of five steps such as the step of performing a test (step S15).

또한, 컴포넌트 조립 단계(단계 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. The client-side metadata makes it possible to automatically create a mediator connecting two components using the glue mechanism (step S23) by extending the metadata owned by the component itself.

또한, 컴포넌트 구현 시에 생성된 클라이언트측 메타데이터를 그대로 글루 컴포넌트 템플릿을 만드는데 사용하므로, 시스템 조립 시에 생성되는 수많은 글루 컴포넌트와 해당 클래스 혹은 인터페이스의 식별자들을 자동으로 생성함으로써 개발자가 하나하나 고유한 식별자를 만드는 번거로움을 제거한다.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 metadata and code to create this glue component object and call a method (reference numeral 715 in FIG. 7C) and to function 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 the upper components, but also subcomponents arbitrarily determined by the developer. 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 is a diagram showing a development tool compiling glue codes to make glue components and displaying the results. After creating glue components 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 by synchronously processing method calls directly between components. 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 according to the present invention provides efficient and independent component development and testing capabilities, and provides a client-side interface specification that enables multi-layer assembly to match the design, thus providing adequate generality. It has the effect of encouraging the development of fine-grained, reusable business logic domain components with 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 software by assembling a plurality of components manufactured on a component development platform in a relationship between a client and a server, each of the components independently includes its own unique ID and its own operation signature without restriction. And the metadata in its own arbitrary format. The metadata includes not only the interface called information as a server but also the interface call information as a client. Generating a glue component template for matching the calling specifications of the client component calling the server component with each other to assemble a plurality of components independently having an arbitrary ID and signature. Software that allows manufacturing method. 제1항에 있어서, 상기 글루 컴포넌트 템플릿 생성 단계는The method of claim 1, wherein the creating a glue component template (a) 클라이언트 컴포넌트로부터 클라이언트측 메타데이터를 적출하는 단계;(a) extracting client side metadata from the client component; (b) 상기 단계 (a)의 메타데이터 중에서 아이디 부분을 읽어 동일한 아이디를 갖는 인터페이스와 글루 컴포넌트 클래스를 생성하는 단계;(b) generating an interface and a glue component class having the same ID by reading an ID portion of the metadata of step (a); (c) 상기 단계 (a)의 메타데이터 중에서 메소드 시그너처를 읽어 상기 단계 (b)에서 생성한 클래스 내에 동일한 시그너처를 갖는 메소드를 생성하는 단계;(c) reading a method signature from the metadata of step (a) and generating a method having the same signature in the class generated in step (b); (d) 서버측 컴포넌트로부터 서버측 메타데이터를 적출하는 단계; 및(d) extracting server side metadata from the server side component; And (e) 상기 단계 (c)에서 생성한 메소드 내부에 서버 컴포넌트의 인스턴스를 생성하는 코드를 생성하여 삽입하는 단계(e) generating and inserting code for creating an instance of the server component in the method generated in step (c) 를 포함하는 소프트웨어 제작 방법.Software production method comprising a. 제2항에 있어서, 상기 단계 (d)에서 얻은 메타데이터 중에서 메소드 시그너처 부분을 읽어 주석으로서, 상기 단계 (e)에서 만든 코드에 삽입하는 단계를 더 포함하는 소프트웨어 제작 방법.3. The method of claim 2, further comprising reading a method signature portion from the metadata obtained in step (d) and inserting it as a comment in the code created in step (e). 제2항에 있어서, 상기 글루 컴포넌트 템플릿 생성 단계는 서버의 메타데이터와 클라이언트의 메타데이터를 비교하여 중재 코드를 생성하는 단계를 더 포함하는 소프트웨어 제작 방법.3. The method of claim 2, wherein generating the glue component template further comprises generating mediation code by comparing metadata of the server with metadata of the client. 제1항에 있어서, 상기 클라이언트측 메타데이터를 포함한 컴포넌트는The component of claim 1, wherein the component including the client-side metadata includes: (a) 상기 서버(하위) 컴포넌트에게 요청할 서비스(오퍼레이션 혹은 메소드)의 시그너처와 주석을 입력받는 단계;(a) receiving a signature and an annotation of a service (operation or method) to request from the server (child) component; (b)상기 단계 (a)에서 입력받은 시그너처를 기반으로 상기 서버 컴포넌트 서비스 호출을 중재하는 글루 컴포넌트 서비스를 동적으로 바인드하여 호출하는 헬퍼 함수(helper function) 코드를 생성하는 단계;(b) generating a helper function code for dynamically binding and calling a glue component service that mediates the server component service call based on the signature received in step (a); (c) 상기 서버 컴포넌트 서비스를 호출하고자 하는 부분에 상기 단계 (b)의 헬퍼 함수 호출 코드를 입력하는 단계; 및(c) inputting a helper function call code of step (b) to a portion to which the server component service is to be called; And (d) 이후 컴포넌트 조립 시 글루 컴포넌트 템플릿을 생성하는데 필요한 상기 클라이언트측 메타데이터를 생성하여 컴포넌트 또는 컴포넌트 리소스에 포함하는 단계(d) thereafter generating and incorporating the client-side metadata required to generate the glue component template when assembling the component to a component or component resource 를 포함하는 단계로 생성되는 것을 특징으로 하는 소프트웨어 제작 방법.Software production method characterized in that it is generated in a step comprising a. 제5항에 있어서, 상기 단계 (a)는 마법사(Wizard)를 이용하여 처리하는 것을 특징으로 하는 소프트웨어 제작 방법.6. The method of claim 5, wherein step (a) is performed using a wizard. 제5항에 있어서, 상기 단계 (d)는 사용자 속성(Custom Attribute)을 이용하여 클라이언트측 메타데이터를 바이너리 컴포넌트에 포함하는 것을 특징으로 하는 소프트웨어 제작 방법.6. The method of claim 5, wherein step (d) includes client-side metadata in a binary component using a custom attribute. 제5항에 있어서, 상기 단계 (d)는 컴포넌트에 포함되거나 컴포넌트와 같이 배포되는 리소스에 클라이언트측 메타데이터를 포함시키는 것을 특징으로 하는 소프트웨어 제작 방법.6. The method of claim 5, wherein step (d) includes client-side metadata in a resource included in or distributed with the component. 제5항에 있어서, 상기 단계 (d)는 글루 컴포넌트 식별자와 클래스 혹은 인터페이스 식별자를 임의로 생성하여, 입력받은 오퍼레이션 시그너처와 함께 클라이언트측 메타데이터로 만드는 것을 특징으로 하는 소프트웨어 제작 방법.The method of claim 5, wherein the step (d) arbitrarily generates a glue component identifier and a class or interface identifier, and generates the client-side metadata along with the input operation signature. 제1항에 있어서, 상기 컴포넌트에 포함된 클라이언트측 메타데이터를 이용하여, 가상의 하위 컴포넌트에 대응하는 시험용 간이(스터브) 컴포넌트 템플릿 코드를 생성한 다음, 편집과 컴파일을 거쳐 만들어진 스터브 컴포넌트를 활용하여 제작중인 소프트웨어의 독립적인 기능 테스트를 실시하는 것을 특징으로 하는 소프트웨어 제작 방법.The method of claim 1, wherein the test simple component template code corresponding to the virtual subcomponent is generated using the client-side metadata included in the component, and then the stub component is created by editing and compiling. A software production method characterized by performing independent functional tests of the software being produced. 컴포넌트 기반의 소프트웨어 개발 환경을 제공하는 컴포넌트 조립에 있어서,In assembling a component that provides a component-based software development environment, (a) 그래픽 도구를 이용하여 선택된 컴포넌트들을 상기 그래픽 도구 화면에 배치하는 프로세스;(a) a process of placing selected components on the graphical tool screen using a graphical tool; (b) 상기 그래픽 도구를 이용하여 클라이언트 컴포넌트와 서버 컴포넌트를 선택하여 서로 연결함으로써 컴포넌트들 사이의 호출 관계를 설정하는 프로세스;(b) establishing a call relationship between components by selecting and connecting a client component and a server component using the graphical tool; (c) 글루 컴포넌트 템플릿을 생성하고, 상기 클라이언트 컴포넌트가 호출하는 서비스 시그너처와 상기 서버 컴포넌트가 제공하는 서비스 시그너처가 다르거나 의미론적으로 불일치 하는 경우 이를 정합시키는 중재 코드를 만들어 글루 컴포넌트를 생성하는 프로세스;(c) a process of generating a glue component by generating a glue component template and generating arbitration code for matching a service signature called by the client component with a service signature provided by the server component when the service signature is different or semantically inconsistent; (d) 상기 단계 (a) 내지 단계 (c)를 반복하여 필요한 만큼의 글루 컴포넌트를 생성하는 프로세스(d) repeating steps (a) to (c) to create as many glue components as needed; 를 구비하고, 상기 프로세스 (d)에서 생성된 복수개의 글루 컴포넌트와 상기 클라이언트 및 서버 컴포넌트를 배치하여 컴포넌트 기반의 조립 소프트웨어를 구현하도록 소프트웨어 개발 환경을 제공하는 소프트웨어 개발 도구.And a software development environment for arranging a plurality of glue components generated in the process (d) and the client and server components to implement component-based assembly software. 제11항에 있어서, 상기 프로세스 (a) 및 프로세스 (b)는 순차도(Sequence Diagram)에 따라 컴포넌트 배치와 시계열에 따른 메시지 흐름을 설정하도록 제공하는 소프트웨어 개발 도구.12. The software development tool of claim 11, wherein process (a) and process (b) provide for establishing component placement and message flow in time series according to a sequence diagram. 제11항 또는 제12항에 있어서, 상기 프로세스 (a) 및 프로세스 (b)는 복수 개의 순차도(Sequence Diagram)를 이용하여 조립함으로써 각각을 독립적으로 테스트할 수 있도록 제공하는 것을 특징으로 하는 소프트웨어 개발 도구.The software development method according to claim 11 or 12, wherein the process (a) and the process (b) are provided to be independently tested by assembling using a plurality of sequence diagrams. tool. 제11항에 있어서, 상기 프로세스 (c)는12. The process of claim 11, wherein said process (c) (c1) 개발자에게 클라이언트 컴포넌트가 호출할 서비스 리스트를 보여 고 그 중 하나를 선택하게 하는 프로세스;(c1) the process of showing the developer a list of services to be called by the client component and selecting one of them; (c2) 개발자에게 서버 컴포넌트가 제공하는 서비스 리스트를 보여 주고 호출될 서비스를 선택하게 하는 프로세스;(c2) a process of showing a developer a list of services provided by a server component and selecting a service to be called; (c3) 선택된 클라이언트와 서버측 서비스에 대한 메타데이터를 이용하여 글루 컴포넌트를 만들기 위한 템플릿 코드를 생성하는 프로세스; 및(c3) generating template code for making a glue component using metadata for the selected client and server side services; And (c4) 생성된 글루 컴포넌트 템플릿 코드에 개발자가 간단한 중재 코드를 삽입함으로써 컴포넌트 사이의 시그너처 정합 문제와 매개변수의 의미론적 불일치를 해결하는 프로세스(c4) The process of resolving signature matching problems and semantic inconsistencies between parameters by the developer inserting simple arbitration code into the generated glue component template code. 를 포함하는 소프트웨어 개발 도구.Software development tools that include. 제14항에 있어서, 컴포넌트에 포함된 클라이언트측 메타데이터를 조사하여 그 컴포넌트가 호출할 서비스의 시그너처와 주석 리스트를 개발자에게 보여주는 프로세스를 더 포함하는 소프트웨어 개발 도구.15. The software development tool of claim 14, further comprising a process of inspecting client-side metadata included in the component and presenting the developer a list of signatures and annotations of the service that component is to invoke. 제14항에 있어서, 상기 프로세스 (c3)는 클라이언트와 서버측 주석과 시그너처를 글루 컴포넌트 템플릿 안에 삽입하여 개발자로 하여금 중재 코드를 용이하게 작성하도록 하는 것을 특징으로 하는 소프트웨어 개발 도구.15. The software development tool of claim 14, wherein the process (c3) inserts client and server side annotations and signatures into the glue component template to facilitate the developer to write the arbitration code. 제14항에 있어서, 상기 프로세스 (c3)는 매개 변수 값들과 되돌려지는 값 및 서비스 호출에 소요되는 시간 등을 기록하는(Logging) 코드를 삽입하여, 기록된 데이터들을 테스트에 이용하는 것을 특징으로 하는 소프트웨어 개발 도구.15. The software of claim 14, wherein the process (c3) inserts a code that records parameter values, returned values, and time required to call a service, and uses the recorded data for testing. Development tools. 임의 프로그램 개발자가 사실상의 산업계 표준(De-Facto Standard) 컴포넌트 플랫폼 상에서 새로운 컴포넌트를 개발하도록 하는 환경을 제공하는 컴포넌트 기반의 소프트웨어 개발 도구에 있어서, 상기 개발 도구는In a component-based software development tool that provides an environment for any program developer to develop new components on a de facto De-Facto Standard component platform, the development tool (a) 상기 프로그램 개발자가 하위 컴포넌트 서비스가 필요하고 그 메소드를 호출하는 코드를 만드는 대신에, 상기 개발 도구가 하위 컴포넌트를 호출하는데 사용할 아이디와 메소드 시그너처를 입력받는 프로세스;(a) a process in which the program developer receives a subcomponent service and inputs an ID and a method signature that the development tool will use to call the subcomponent, instead of creating code that calls the method; (b) 상기 프로세스 (a)에서 입력받은 정보를 바탕으로 글루 컴포넌트의 아이디와 메소드 시그너처에 대한 클라이언트측 메타데이터와 글루 컴포넌트 객체를 생성하고 메소드를 호출하는 코드를 생성하여 상기 코드를 함수화 하는 프로세스; 및(b) creating a client-side metadata for the glue component ID and method signature and a glue component object based on the information input in the process (a), and generating a code for calling a method to functionalize the code; And (c) 클라이언트측 메타데이터를 독출하여 동일한 아이디와 시그너처를 갖는 글루 컴포넌트를 생성하는 템플릿 코드와 프로젝트 파일을 생성하는 프로세스;(c) a process of generating template code and a project file by reading the client-side metadata to generate a glue component having the same ID and signature; 를 포함하는 컴포넌트 기반의 소프트웨어 개발 시스템.Component-based software development system comprising a. 제18항에 있어서, 상기 프로세스 (c)는 개발 중인 컴포넌트가 하위 컴포넌트와 에러 없이 조립되어 동작될 수 있는지를 테스트하기 위해 테스트용 스터브 컴포넌트 템플릿을 생성해 주는 프로세스를 포함하는 컴포넌트 기반의 소프트웨어 개발 시스템.19. The component-based software development system of claim 18, wherein the process (c) includes a process of generating a test stub component template for testing whether a component under development can be assembled and operated without error with a subcomponent. . 제18항에서, 상기 프로세스 (a) 내지 프로세스 (c)에서 개발되는 컴포넌트는 상위 컴포넌트에게 제공하는 서비스에 대한 서버측 메타데이터와 개발자가 임의로 정한 하위 컴포넌트가 제공하는 서비스를 규정한 클라이언트측 메타데이터를 내포하는 것을 특징으로 하는 컴포넌트 기반의 소프트웨어 개발 시스템.19. The method of claim 18, wherein the components developed in the processes (a) to (c) are server-side metadata for services provided to the upper component and client-side metadata defining services provided by the lower component arbitrarily determined by the developer. Component-based software development system comprising a. 임의 프로그램 개발자가 사실상의 산업계 표준(De-Facto Standard) 컴포넌트 플랫폼에서 운영되는 새로운 컴포넌트를 개발하도록 하는 환경을 제공하는 컴포넌트 기반의 소프트웨어 개발 도구에 있어서, 상기 개발 도구는In a component-based software development tool that provides an environment for any program developer to develop new components operating on a de facto De-Facto Standard component platform, the development tool (a) 상기 프로그램 개발자가 컴포넌트를 조립할 수 있도록 컴포넌트 조립 프로젝트를 생성하면, 조립 프로젝트 진행을 위한 파일을 생성시키고 순차도 형태의 조립 편집창을 제공하는 프로세스;(a) a process of creating a component assembly project for the program developer to assemble the component, generating a file for the assembly project and providing an assembly editing window in a sequential form; (b) 상기 조립 편집창에 오브젝트 라이프 라인이 생성되고 조립 프로젝트에 참여한 컴포넌트와 매핑되면 매핑된 컴포넌트의 메타데이터가 독출되어 각 메소드의 시그너처가 인식되는 프로세스;및(b) a process of recognizing the signature of each method by reading metadata of the mapped component when an object lifeline is generated in the assembly edit window and mapped to a component participating in an assembly project; and (c) 상기 컴포넌트들이 메시지로 연결되어 메소드가 호출되고, 글루 컴포넌트가 생성되는 프로세스(c) a process in which the components are connected by a message, a method is called and a glue component is generated 를 포함하는 컴포넌트 기반의 소프트웨어 개발 시스템.Component-based software development system comprising a. 제22항에 있어서, 개발자가 두 컴포넌트의 메소드값 시그너처의 구문적/의미론적(Syntactic/Semantic) 불일치를 해소하기 위해 개발 도구가 생성한 글루 코드를 편집하면 상기 개발 도구는 개발자의 중재 코드를 생성하는 프로세스를 더 포함하는 컴포넌트 기반의 소프트웨어 개발 시스템.23. The developer of claim 22 wherein the developer generates the mediation code of the developer if the developer edits the glue code generated by the development tool to resolve syntactic / semantic inconsistencies in the method value signatures of the two components. Component-based software development system further comprising a process.
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
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
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
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
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

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
KR20040097941A true KR20040097941A (en) 2004-11-18
KR100697246B1 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) JP2009245441A (en)
KR (2) KR20030044959A (en)

Cited By (10)

* 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
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
KR100828302B1 (en) * 2007-11-07 2008-05-08 정안모 A Method for Software Development and Operation Based on Component Reuse and Dependency Injection
KR100860963B1 (en) * 2007-03-08 2008-09-30 삼성전자주식회사 Apparatus and method for developing software based on component
KR100884435B1 (en) * 2007-12-05 2009-02-19 정안모 A Method for Decoupling Service Components from Application-Specific Business Entities
KR100887105B1 (en) * 2008-09-09 2009-03-04 김진만 Method for implementing .net component for controlling peripheral device in indutrial embeded controller loaded windows ce
US7895575B2 (en) 2005-08-19 2011-02-22 Electronics And Telecommunications Research Institute Apparatus and method for generating test driver
US8601433B2 (en) 2008-02-15 2013-12-03 Samsung Electronics Co., Ltd. Method and apparatus for generating virtual software platform based on component model and validating software platform architecture using the platform
WO2014059207A1 (en) * 2012-10-12 2014-04-17 Baker Hughes Incorporated Method and system to automatically generate use case sequence diagrams and class diagrams

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Family Cites Families (5)

* 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
KR100426311B1 (en) * 2001-12-28 2004-04-08 한국전자통신연구원 Method and apparatus for enterprise jababeans components assembly

Cited By (11)

* 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
KR100777103B1 (en) * 2005-08-19 2007-11-19 한국전자통신연구원 Apparatus and method for generation of test driver
US7895575B2 (en) 2005-08-19 2011-02-22 Electronics And Telecommunications Research Institute Apparatus and method for generating 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
US8601433B2 (en) 2008-02-15 2013-12-03 Samsung Electronics Co., Ltd. Method and apparatus for generating virtual software platform based on component model and validating software platform architecture using the platform
KR100887105B1 (en) * 2008-09-09 2009-03-04 김진만 Method for implementing .net component for controlling peripheral device in indutrial embeded controller loaded windows ce
WO2014059207A1 (en) * 2012-10-12 2014-04-17 Baker Hughes Incorporated Method and system to automatically generate use case sequence diagrams and class diagrams
US9158504B2 (en) 2012-10-12 2015-10-13 Baker Hughes Incorporated Method and system to automatically generate use case sequence diagrams and class diagrams

Also Published As

Publication number Publication date
KR20030044959A (en) 2003-06-09
JP2009238229A (en) 2009-10-15
KR100697246B1 (en) 2007-03-21
JP2009238231A (en) 2009-10-15
JP2009238230A (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
JP2009245441A (en) Software development method using metadata expanded under component board environment, and its development system
US20100077386A1 (en) System and a method for cross-platform porting of business applications and making them contexually-aware on target platforms
WO2011045634A1 (en) Automated enterprise software development
Antkiewicz et al. Engineering of framework-specific modeling languages
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
US20120060141A1 (en) Integrated environment for software design and implementation
Volgyesi et al. Component-based development of networked embedded applications
Koch Classification of model transformation techniques used in UML-based Web engineering
Merilinna A tool for quality-driven architecture model transformation
Hussain Investigating architecture description languages (adls) a systematic literature review
Buchgeher et al. Connecting architecture and implementation
Truyen et al. On interaction refinement in middleware
KR101061326B1 (en) Application Server Development System
Buchgeher et al. Integrated software architecture management and validation
Kozaczynski et al. Architecture specification support for component integration
Tang A software synthesis methodology for developing component-based applications
Moschoyiannis Specification and analysis of component-based software in a concurrent setting
EP1638022A2 (en) System and method for developing portal applications and automatically deploying them into a portal server application
Mani Studying the Performance Impact of SOA Design Patterns via Coupled Model Transformations
Eixelsberger Software Architecture Recovery of Product Lines
Vitkin et al. The Role of the Data Dictionary in the Model-Based Development Process
Votintseva Binding Different Modeling Techniques: Expectations from Model Transformation

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