KR20020097147A - 새로운 컴포넌트를 생성 또는 구입하며 이들을 목록에추가할 수 있는 기능을 구비한 객체 지향 소프트웨어 개발툴 - Google Patents

새로운 컴포넌트를 생성 또는 구입하며 이들을 목록에추가할 수 있는 기능을 구비한 객체 지향 소프트웨어 개발툴 Download PDF

Info

Publication number
KR20020097147A
KR20020097147A KR1020027008438A KR20027008438A KR20020097147A KR 20020097147 A KR20020097147 A KR 20020097147A KR 1020027008438 A KR1020027008438 A KR 1020027008438A KR 20027008438 A KR20027008438 A KR 20027008438A KR 20020097147 A KR20020097147 A KR 20020097147A
Authority
KR
South Korea
Prior art keywords
layer
software
software component
business
application
Prior art date
Application number
KR1020027008438A
Other languages
English (en)
Inventor
뱅크케빈엘.
그린데이비드더블유.
키오우스키존더블유주니어
Original Assignee
베이커 휴지스 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 베이커 휴지스 인코포레이티드 filed Critical 베이커 휴지스 인코포레이티드
Publication of KR20020097147A publication Critical patent/KR20020097147A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design

Abstract

하나 이상의 프로세싱 유닛과, 상기 프로세싱 유닛에 접속된 하나 이상의 메모리 저장부와, 상기 하나 이상의 프로세싱 유닛 내에서 실행 가능한 N-계층 소프트웨어 실행파일과, 상기 프로세싱 유닛에 접속된 통신 경로 및 상기 메모리 저장부에 상주가능한 하나 이상의 확장가능한 계층을 포함하되, 상기 계층은 소정 개수의 실행가능한 소프트웨어 컴포넌트의 논리적으로 분류된 세트를 더 포함하며(도 6, 74), 각 실행가능한 소프트웨어 컴포넌트는 외부 인터페이스를 더 포함하며, 각각의 다른 소프트웨어 컴포넌트와 통신 가능한 확장가능한 N-계층 소프트웨어 어플리케이션(도 6, 70) 생성용 컴퓨팅 시스템이 개시되어 있다. 상기 시스템을 이용한 확장 가능한 N-계층 소프트웨어 어플리케이션(도 6, 86) 생성용 컴퓨팅 시스템에서 소프트웨어 어플리케이션을 생성하는 방법은 어플리케이션 요구 조건의 세트를 결정하는 단계와, 어플리케이션 요구 조건 세트의 각각에 대하여 하나 이상의 상기 어플리케이션 요구 조건과 매치되는 소프트웨어 컴포넌트를 위한 소프트웨어 컴포넌트의 목록을 검사하는 단계를 포함한다. 소프트웨어 컴포넌트 목록에 소프트웨어 컴포넌트 매치가 존재하지 않는 어플리케이션 요구 조건 세트의 어플리케이션 요구 조건 각각에 대하여, 어플리케이션 요구 조건에 매치되는 소프트웨어 컴포넌트가 획득되어 소프트웨어 컴포넌트 목록에 저장된다. 각각의 매치되거나 새로운 소프트웨어 컴포넌트는 계층의 소정 세트의 각 계층 및 상기 계층의 소정 세트를 조립함에 의하여 생성된 상기 소프트웨어 어플리케이션과 관련된다.

Description

새로운 컴포넌트를 생성 또는 구입하며 이들을 목록에 추가할 수 있는 기능을 구비한 객체 지향 소프트웨어 개발 툴{OBJECT ORIENTED SOFTWARE DEVELOPMENT TOOL WITH THE ABILITY TO CREATE OR PURCHASE NEW COMPONENT AND ADD THEM TO AN INVENTORY}
소프트웨어 프로그램 코드를 디자인하거나 생성하기 위하여 프로그래머나 코드 개발자들은 다양한 기술들을 사용하고 있다. 하나의 접근 방법은, 소프트웨어 어플리케이션을 데이터 저장 및 어플리케이션 로직과 같은 다양한 기능들이 완전히 결합된 "통일된(monolithic)" 구조로 설계하는 것이다. 예를 들어, 어플리케이션이나 프로그램에 의하여 구현되어야 할 시스템 스펙(specifications)이나 기능들의 세트가 주어진 경우에, 코드 개발자는 원하는 모든 기능들을 구현하는 통일적이며 독립적으로 실행 가능한 프로그램을 디자인한다. 프로그래머는, 예를 들어, C++과 같은 고급의 프로그램 언어와 개발 도구를 사용하여, 고급 언어의 소스 코드를 만들어 내고, 이를 컴파일러로 컴파일하여 프로그램의 실행 가능한 버전을 제공한다.
이러한 접근 방법의 문제점은 어플리케이션을 유지보수하기 어렵고, 프로그램의 모든 부분들이 결합되어 있으며 어플리케이션마다 다르기 때문에 이들을 재사용하기 곤란하다는 문제가 있다.
따라서, 소프트웨어 개발 분야에서는 어플리케이션 기능을 객체 또는 컴포넌트와 같은 더 작은 유닛들로 분할한 다양한 소프트웨어 아키텍처가 개발되어 왔다. 이러한 유닛들을 조합하여 원하는 어플리케이션을 위한 전반적인 기능을 제공할 수 있게 된다. 예를 들어, 컴포넌트들의 그룹을 어셈블하고 컴파일하여 독립적이고 실행 가능한 프로그램을 제공할 수 있다. 또는, 특정 컴포넌트의 기능이 필요한 경우에 해당 컴포넌트를 실시간으로 호출하여 사용할 수 있다.
이러한 유닛들을 개발하기 위해서는 자원(resource)의 소모를 필요로 하기 때문에 후속 어플리케이션에서 그러한 기능이 필요할 경우마다 상기 유닛들은 다시 개발할 필요 없이 이들을 재사용하는 것이 바람직하다. 2단계 및 3단계 아키텍처들과 같은 현재의 소프트웨어 아키텍처에서는, 데이터 저장부나 사용자 인터페이스와 같은 일부분은 상대적으로 재사용하기에 용이하다. 그러나, 어플리케이션 로직을 구현하는 컴포넌트와 같은 다른 종류의 컴포넌트들은 여전히 큰 블록으로 통합되어 있어 컴포넌트나 다양한 기능들을 재사용하기 어렵게 한다. 따라서, 종래기술의 단점을 해결하는 향상된 소프트웨어 컴포넌트 아키텍처 및 관련된 소프트웨어 개발 기술이 필요하게 되었다.
본 발명은 확장가능한 N-계층 소프트웨어 어플리케이션 개발용 소프트웨어 컴포넌트 아키텍쳐를 이용한 소프트웨어 어플리케이션 개발에 관한 것이다.
도 1은 본 발명의 "N-계층 아키텍처" 개념을 도시한 다이어그램.
도 2는 소프트웨어 팩토리(factory)을 도시한 설명도.
도 3은 프레임워크를 도시한 다이어그램.
도 4는 규칙들의 플로우차트.
도 5는 본 발명의 라이프 사이클 규칙을 도시한 플로우차트.
도 6은 본 발명에서 소프트웨어 컴포넌트들을 생성하기 위해 사용하는 소프트웨어 아키텍처 디자인 방법을 도시한 플로우차트.
도 7은 본 발명의 기초 계층의 벤다이어그램.
도 8은 본 발명의 메시징 계층의 벤다이어그램.
도 9는 본 발명의 비즈니스 소프트웨어 컴포넌트의 벤다이어그램.
도 10은 컴포지트 컴포넌트의 벤다이어그램.
도 11은 본 발명의 실시간 장치 계층의 벤다이어그램.
도 12는 본 발명의 데이터 계층의 벤다이어그램.
도 13은 본 발명의 처리 계층의 벤다이어그램.
도 14는 본 발명의 시각 계층의 벤다이어그램.
도 15는 본 발명의 모델-뷰-컨트롤러(MVC)의 벤다이어그램.
도 16은 본 발명의 템플릿 오브젝트의 벤다이어그램.
도 17은 본 발명의 비즈니스 규칙 계층의 벤다이어그램.
도 18은 본 발명의 인터셉터 계층의 벤다이어그램.
도 19는 본 발명의 어플리케이션 계층의 벤다이어그램.
도 20은 본 발명의 위저드 계층의 벤다이어그램.
도 21은 본 발명의 테스팅 계층의 벤다이어그램.
도 1을 참조하면, 본 발명은 생산 지향적 접근 방법을 잘 정의된(well-defined) 아키텍처에 기반한 소프트웨어 생산에 적용하는 방법을 포함한다. 본 명세서에서, 생산(manufacturing)은 소프트웨어 팩토리(software factory)와 유사한 방법을 의미한다. 본 발명에 의한 방법을 이용하여, 소프트웨어 어플리케이션 개발은 모든 종류의 지적 자산들을 신속하고 저렴하게 결합할 수 있는 조립(assembly) 라인을 가진 소프트웨어 생산 프로세스와 같이 진행될 수 있다.
본 발명은 N-계층 아키텍처 개념을 사용한다. N-계층 아키텍처에서는, 모든 기능들은 시스템 레벨에서 잘 정의된 비즈니스 기능(business function)을 수행하는 논리 단위 또는 계층(30)으로 세분화된다. 본 발명의 N-계층 아키텍처에서 계층(30)의 수에는 제한이 없다.
본 발명의 N-계층 소프트웨어 디자인 아키텍처는 소프트웨어 컴포넌트(20)를 개발하기 위하여 이용된다. 프로그래밍 분야의 당업자들이 이해하는 바와 같이, "소프트웨어 컴포넌트"는 언어로부터 독립적이며 FORTRAN, C, C++, JAVA 등 또는 이들의 조합을 제한없이 포함하는 복수개의 컴퓨터 언어로 구현될 수 있다. 프로그래밍 분야의 당업자들이 이해하는 바와 같이, 종래기술의 "N-계층"은 프로토콜 스택과 같이 계층구조(hierarchy)를 의미하는 것으로 생각될 수 있다. 그러나 본 명세서에서는, "N-계층은" N개의 계층(30)으로 특징되는 아키텍처를 의미하며, 각각은 특정 종류 및 인터페이스를 구비한다. 계층들에 대하여 계층구조(hierarchy)가 정의될 수는 있으나, 본 발명에 의한 N-계층에서는 어떠한 계층구조도 강제되지 않는다.
개발하려는 각 소프트웨어 컴포넌트(20)는 그 소프트웨어 컴포넌트(20) 및 계층(30)에 의하여 수행되는 기능의 특징에 따라 적어도 하나의 계층(30)과 관련되어 있다. 본 발명은, 각 소프트웨어 컴포넌트가 정해진 기능을 수행하고 각 소프트웨어 컴포넌트(20)가 그 계층을 위해 아키텍처에 의해 지정된 인터페이스를 구비하는 것을 보장하도록 소프트웨어 컴포넌트 디자이너가 각 소프트웨어 컴포넌트(20)를 디자인하거나 선택하는, N-계층 시스템을 구현하기 위한 아키텍처를 사용하는 방법 및 시스템을 포함한다.
본 발명에 의한 방법을 이용하는 경우, 구현되거나 정의될 수 있는 계층(30) 또는 소프트웨어 컴포넌트(20)의 개수에는 제한이 없다. 아키텍처를 위한 규칙은 계층들(30)은 2- 또는 3-계층 시스템에서와 같이 계층구조(hierarchy)의 일부일 필요가 없는 경우 사용되지만, 각 계층(30)이 필요에 따라 하나 또는 그 이상의 다른 계층(30)과 상호작용 할 수 있도록, 즉 주어진 계층(30) 내에서 소프트웨어 컴포넌트(20)가 필요에 따라 하나 또는 그 이상의 다른 계층들(30)에 속한 소프트웨어 컴포넌트들(20)과 상호작용 할 수 있도록 특정된 인터페이스를 사용하여 논리적으로 상호연결되어야 한다.
본 발명에 있어서 이하의 용어들은 소프트웨어 프로그래밍 분야의 당업자에게 있어서 이하의 의미와 같이 이해되며, 일부는 본 명세서에 추가적으로 설명되어 있다.
용어 정의
아키텍처 디자인을 만들기 위한 디자인 원칙 및 규칙의 세트
COM 컴포넌트 객체 모델링(Component Object Modeling)
컴포넌트 기능이 어떻게 구현되는 지에 관한 상세한 사항들을 보호하며(숨기며) 이진 레벨에서 재사용할 수 있는 잘 정의된 인터페이스를 가지고 있는 객체.
CORBA 공통 객체 요청 보로커 아키텍쳐(Common Object Request Broker Architecture)
DCOM 분산 컴포넌트 객체 모델(Distributed Component Object Model)
DLL 다이나믹 링크 라이브러리(Dynamic Link Library)
이벤트 핸들러 메시지 처리 객체
프레임워크 비즈니스 객체의 속성을 변경하거나 새로운 동작을 추가하는, 비즈니스 객체를 위한 구조화된 컨텍스트
GUID 전역 고유 식별자(Globally unique identifier). 예를 들어, 소프트웨어 컴포넌트를 고유하게 식별하기 위하여 미리 정해진 수의 비트를 가지는 숫자.
JAVA 프로그래밍 언어
모델 소정의 규칙들의 세트을 통해서 강제되는 관계를 가지는 컴포넌트들의 혼성 모임; 계층으로 조직화될 수 있는 소프트웨어 컴포넌들의 컬렉션 또는 인스턴스
객체 프로그래밍 구조의 인터페이스를 통해서만 접근 가능하고, 하나의 유닛으로 정의되고 할당된 데이터와 함수를 모두 캡슐화하는 프로그래밍 구조. COM 객체는 적어도 객체가 사용되는 도중에 객체의 존재를 유지하고, 객체의 다른 인터페이스를 제공하는 IUnknown 인터페이스를 반드시 지원해야한다.
패키지 메시징 또는 접속과 같은 특정 동작을 제공하는 프레임워크 내의 인터페이스의 논리적 분류
싱크 메시징을 위한 접속 싱크(sink)
소스 메시징을 위한 접속 소스(source)
계층 잘 정의(well-defined)되어 있고, 소정의 기능을 수행하는 컴포넌트들의 논리적인 분류.
본 명세서 사용되는 바와 같이, "조작하다"는 수동적으로 모델링하거나, 능동적으로 모델링하거나, 또는 능동 및 수동 모델링의 조합을 수행하는 소프트웨어 어플리케이션을 포함하는 의미이다. 또한 "조작하는" 소프트웨어는, 소프트웨어 프로그래밍 분야의 당업자에 의해 이해되는 바와 같이, 데이터 처리, 데이터 획득 및 관리 제어 기능을 수행하는 소프트웨어 어플리케이션을 포함한다.
프레임워크(40)는 소프트웨어 컴포넌트(20)와 그 계층(30)에 포함되는 것으로 분류되는 임의의 소프트웨어 컴포넌트(20)를 위한 표준 인터페이스의 세트를 포함하는 계층(30)에 대한 기초 디자인 구조를 명시한다. 도 1 내지 도 21에 도시된바와 같이, 일반적으로 박스 형태로 표시된 프레임워크(40)는 다양한 도면에서 일반적으로 원형으로 표시된 하나 이상의 패키지(42); 다양한 도면에서 구름 형태로 도시되어 있는 하나 이상의 대표 인터페이스; 및 하나 이상의 질의 가능한 속성 및 변수뿐만 아니라 하나 이상의 소프트웨어 컴포넌트(20) 수집 메서드를 포함한다. 따라서 패키지(42)는 메시징 또는 접속과 같은 특정 동작을 제공하는 인터페이스의 집합이다. 본 발명의 프레임워크(40)의 대부분은 하나 이상의 패키지(42)를 포함한다.
객체 지향 소프트웨어 프로그래밍 분야에서는, 메서드 및 프로퍼티는 종종 속성으로 불리우나, 프레임워크(40), 패키지(42) 및 인터페이스는 객체 지향 프로그래밍 구조로 제한되는 것은 아니다. 본 명세서에 사용된 바와 같이, "메서드"는 동작을 제공하는 소프트웨어를 의미하며, "프로퍼티"는 다른 인터페이스에 노출된 변수 및 상수를 의미한다.
본 명세서에 또한 사용된 바와 같이, "컬렉션" 또는 소프트웨어 컬렉션"은 미가공 데이터 또는 다른 소프트웨어 컴포넌트(20)인 데이터 항목 그룹으로의 액세스를 허용하는 인터페이스를 제공하는 소프트웨어 구조이다. 객체 그룹으로의 액세스를 제공하기 위한 표준을 따르는 인터페이스는 본 명세서에서 "컬렉션 인터페이스"로 불리운다. 예를 들면, 컬렉션 인터페이스는 특정 메서드, 예컨대 "Item()" 메서드에 의한 컬렉션의 단일 항목으로의 프로그램적인 액세스를 제공하는 인터페이스를 제공한다. 또 다른 예로써, 컬렉션 인터페이스는, 소프트웨어 프로그래밍 분야의 당업자가 용이하게 이해할 수 있는 용어인, "클라이언트"가 특성, 예컨대컬렉션에 몇 개의 항목이 있는지를, 프로퍼티, 예컨대 "Count" 프로퍼티를 통하여 인식하도록 한다.
본 명세서 전체에 있어서, 다른 종류의 소프트웨어 컴포넌트(20)에 대한 참조는 다음의 명명 방법을 사용한다.
표 1: 표준 약어
약어 정의
GC 클래스
GP 패키지
IGC 클래스로의 인터페이스
따라서, 이 명세서에는, 엔티티(entity), 구조, 또는 "GCxxx"와 같이 제시된 예는, "GCxxx"가, 소프트웨어 프로그래밍 분야의 당업자에게 용이하게 이해될 수 있는 용어인 클래스로 구현될 수 있다는 것을 의미한다. 엔티티(entity), 구조, 또는 "IGCxxx"와 같이 제시된 예는, "IGCxxx"가, 소프트웨어 프로그래밍 분야의 당업자에게 용이하게 이해될 수 있는 용어인 클래스로의 인터페이스라는 것을 의미한다. 엔티티(entity), 구조, 또는 "GPxxx"와 같이 제시된 예는 "IGCxxx"가 패키지(42)라는 것을 의미한다. 소프트웨어 컴포넌트(20)는 "클래스"의 개념을 사용하는 소프트웨어, 예컨대 객체 지향 프로그래밍 언어외의 것으로 구현될 수 있으므로, 이러한 용어 및 명명 방법은 예시적인 것이며 범위를 제한하는 것이 아니다.
또한, 소프트웨어 컴포넌트(20)는 프로퍼티 또는 속성을 포함할 수 있다. 본 명세서에 사용되는 바와 같이, 뒤따르는 괄호 "()"를 가진 명칭으로 표시된 프로퍼티는 호출가능한 메서드(invocable method)를 의미하는 반면, 뒤따르는 괄호 "()" 가 없는 명칭으로 표시된 프로퍼티는 변수 또는 데이터 포인트를 의미한다. 예를들면, 프로그래밍 분야의 당업자는 "foo"로 명명된 객체 또는 소프트웨어 컴포넌트(20)는 "foo.add()"에 의해 호출가능한 "add()" 메서드와, "foo.grex"에 의하여 액세스가 가능한 "grex" 프로퍼티 또는 이와 유사한 것을 포함한다는 것을 이해할 것이다. 소프트웨어 프로그래밍 분야의 당업자가 용이하게 이해할 수 있는 바와 같이, 둘 이상의 소프트웨어 컴포넌트(20)는 동일하게 명명된 메서드 또는 프로퍼티를 포함할 수 있으나, 각각은 고유하고 구별되는 메서드 또는 프로퍼티를 표시한다. 예를 들면, "IGOne" 인터페이스는 "IGTwo" 인터페이스가 포함하는 것과 같이 "x" 프로퍼티를 포함할 수 있느나, IGOne.x는 IGTwo.x와 동일하지 않다. 유사하게, IGOne.foo()는 IGTwo.foo()와 동일하지 않다.
본 발명의 범위는 청구항에 기재된 것과 같으며, 이러한 설명적인 구성은 발명의 한계가 아니며 소프트웨어 프로그래밍 분야의 당업자가 본 발명을 보다 용이하게 이해할 수 있도록 하기 위함이다. 또한, 이러한 기능들, 명명법과 COM 객체 일반에 대한 추가적인 정보는 1999년 1월 마이크로소프트 출판사에서 출판되고 참조로 본 명세서에 포함된 MSDN(마이크로소프트 개발자 네트워크) 라이브러리에서 찾아 볼 수 있다.
본 명세서에 사용된 바와 같이, 일반적으로 참조 부호 20인 "소프트웨어 컴포넌트"는, 소프트웨어 프로그래밍 분야의 당업자가 용이하게 이해할 수 있는 용어인 객체 지향 프로그래밍에서 사용되는 것과 같은 객체를 포함하지만 객체에 한정되는 것은 아니라는 것을 이해하여야 한다. 대신에, 소프트웨어 컴포넌트(20)는 런타임 라이브러리, 다이나믹 링크 라이브러리, 프로토콜 핸들러, 시스템 서비스, 클래스 라이브러리, 써드 파티 소프트웨어 컴포넌트 및 라이브러리 등 또는 이들의 조합을 포함한 호출가능한 소프트웨어를 더 포함할 수 있다.
특정 산업의 필요와 특징을 만족시키기 위해, 본 발명의 원리, 규칙, 및 방법을 이용하여 N-계층 아키텍처를 디자인 할 수 있다. 본 명세서에서 "어플리케이션"은 소프트웨어 프로그래밍 분야의 당업자들에 의해 이해되는 바와 같이, 예를 들어 CORBA, JIT(just-in-time), JAVA 등 또는 이들의 조합과 같이 컴파일되고, 인터프리트되고, 온-더-플라이(on-the-fly) 어플리케이션을 포함하는 것으로 이해된다. 코드 개발자가 특정 N-계층 아키텍처의 스펙(specification) 내에서 특정 소프트웨어 컴포넌트(20)들을 생성할 수 있도록 하는 "위저드" 또는 다른 코드 개발 툴이 또한 사용될 수 있다. 예를 들어, 위저드는 코드 디자이너가 소프트웨어 컴포넌트(20)를 위한 계층(30)을 선택하도록 하고, 소프트웨어 컴포넌트(20)가 그 특정 계층(30)의 소프트웨어 컴포넌트들(20)을 위해 지정된 인터페이스 표준에 부합하도록 보장함에 의하여 소프트웨어 컴포넌트(20)를 생성할 수 있도록 한다.
본 발명을 이용하여 정의되고 구현되는 N-계층 어플리케이션은 다양한 산업 및 상황, 예를 들면 지질 산업 기술뿐만 아니라 조선 기술, 재정 기술, 의료 기술에서의 이용에 적합하다.
도 1 내지 도 21을 참조하면, 본 발명의 N-계층 어플리케이션은 어플리케이션을 구성하도록 하여주는 규칙 및 메서드의 특정을 위한 방법론을 이용하여 개발된 확장 가능한 N-계층을 이용하여 설계된다. 그러한 방법론은 본 명세서에 참조를 위해 첨부된 __________에 출원되어 출원 계속중인 Ser. No._/______(attorneydocket no. D5407-00109, U.S. Express Mail no.______________)에서 제안되었다.
그러한 어플리케이션은 선택된 아키텍쳐에 대한 규칙에 따라 시스템 레벨에서 비즈니스 기능과 같이 잘 정의된 기능을 수행하는 논리 단위들 또는 계층들(30)로 나누어진 기능을 가지고 있다. 본 실시예에서, 각 계층(30)은 유사 또는 상보적 형태의 동작을 구비한 소프트웨어 컴포넌트(20)들을 논리적으로 분류한다.
이하에 설명된 바와 같이, 프레임워크(40)는 소프트웨어 컴포넌트(20)의 기초 세트 및 그 계층(30)에 속하는 것으로 분류된 임의의 소프트웨어 컴포넌트(20)를 위한 표준 인터페이스의 세트를 포함하는 기본 디자인 구조를 지정한다. 프레임워크(40)는 복수개의 패키지(42)를 포함할 수 있다.
본 발명은 새로운 소프트웨어 컴포넌트(20)를 생성 또는 구입하여 후속 어플리케이션에서 나중에 재사용하기 위하여 컴포넌트의 목록(또는 카탈로그)(700)에 추가될 수 있도록 허용하는 소정의 규칙을 이용한다. 더 많은 소프트웨어 컴포넌트(20)가 개발됨에 따라, 목록(700)은 증가하게 되며, 따라서 새로운 어플리케이션을 개발하는데 요구되는 시간 및 자원을 더 감소시킨다. 또한, 소프트웨어 컴포넌트들(20)은 목록에 없는(off the shelf) 컴포넌트들을 포함하는 인터페이스를 사용할 수 있는 다른 소프트웨어 컴포넌트(20)에 의하여 이용이 가능하다. 목록에 없는 컴포넌트들, 예를 들어 새로 구입한 컴포넌트들은 본 발명에 따른 N-계층 아키텍처의 요구에 따라서 소정의 인터페이스를 상기 목록에 없는 컴포넌트에 부가함으로써 본 발명의 N-계층 아키텍처에 합병될 수 있다.
본 발명은 또한 주어진 예를 들어 새로운 계층(30)을 첨가함으로써 N+1-계층이 되는 것과 같이, N-계층 아키텍처가 확장되도록 허용하는 규칙을 이용한다. 선행하는 N-계층 아키텍처를 위해 개발된 많은 소프트웨어 컴포넌트(20)들은 증가된 N+1-계층 아키텍처에서도 바로 재사용할 수 있으며 다른 것들도 약간의 수정만으로 거쳐 재사용할 수 있게 된다.
본 발명을 사용하여 정의되고 구현된 각 계층(30)은 그 계층과 관련된 소프트웨어 컴포넌트(20)들이 구비하여야 하는 인터페이스들의 형태를 지정한다. 이러한 인터페이스들은 계층(30)의 일형태의 소프트웨어 컴포넌트(20)를 다른 계층(30) 내의 다른 소프트웨어 컴포넌트(20)가 액세스할 수 있도록 하는 N-계층 아키텍처를 위한 표준화된 인터페이스들이다. 본 발명을 사용하여 이러한 종래의 소프트웨어 컴포넌트 디자이너들은 소프트웨어 컴포넌트(20)를 위한 계층(30)에 의해 명시된 인터페이스에 기초하여 다른 소프트웨어 컴포넌트(20)에 대한 지식 또는 접근할 수 있는 능력을 가진 소프트웨어 컴포넌트(20)를 생성하기 위한 규칙들을 사용한다.
일실시예에서, 본 발명은 계층(30)의 특정된 초기 개수 및 유형과 각 계층(30)에 대한 특정 인터페이스 아키텍쳐를 구비한 특정 N-계층 어플리케이션을 정의하고 한정하는 소정의 규칙을 사용하며, 각 초기 계층(30)은 비즈니스 로직 처리, 데이터 처리 등과 같은 시스템 기능의 주요부분 중 하나를 만족시킨다.
그 층(30)에서 분류된 소프트웨어 컴포넌트(20) 종류의 특성에 따라서 고유한 인터페이스 세트를 구비한다. 더 일반적인 인터페이스는 소프트웨어 컴포넌트(20)의 의존관계가 상기 소프트웨어 컴포넌트(20)에 의하여 수집되고 다른 컴포넌트들에 의하여 액세스되도록 하는 특정적, 공통적인 제1 인터페이스; 및 소프트웨어 컴포넌트(20)가 다른 컴포넌트에 의하여 실행시 식별될 수 있도록 하는 제2 인터페이스를 포함한다.
일 실시예에서, 본 발명의 N-계층 아키텍처는 소프트웨어 컴포넌트(20)가 비동기식 메시징을 통하여 비동기 통신을 수행하도록 하는 비동기 아키텍처 개념을 이용할 수 있다. 다른 실시예에서, 동기식 또는 혼합 동기식 및 비동기식 메시징이 존재할 수 있다.
본 실시예에서 소프트웨어 컴포넌트(20) 인터페이스들은 WINDOWS(R) 운영 체제 환경을 위한 마이크로소프트의 COM 스펙을 사용하여 구현된다. 예를 들어 Don Box의 Essential COM(Addison Wesley Longman Inc. 1998년 출간, ISBN 0-201-63446-5)을 참조한다. 외부에서는 소프트웨어 컴포넌트(20)의 외부 인터페이스들만을 볼 수 있다. ActiveX와 같은 공통 상호작용 표준(Common Interaction standards)을 사용하여 소프트웨어 컴포넌트(20)간에 통신을 용이하게 할 수 있으며, 소프트웨어 컴포넌트(20)들 사이에 연결 소프트웨어의 필요성을 줄일 수 있다. 소프트웨어 컴포넌트(20)에 의하여 제공되는 서비스들을 네트워크로 연결함으로써 하나 이상의 원하는 프로세스들을 지원할 수 있다. 이러한 서비스들은 다른 소프트웨어 컴포넌트(20)에 의하여 재사용되고 공유될 수 있다. 그러나, 소프트웨어 컴포넌트(20)가, 예를 들어, LINUX, SUN(R) SOLARIS(R), UNIX 등 또는 이들의 조합에 의해 요구되는 환경 개념을 포함한 복수개의 다른 환경에서 만들어질 수 있음은 프로그래밍 분야의 당업자에게 자명하다.
현재 고려되고 있는 바와 같이, 몇몇 계층(30)은 진정한 계층(30); 즉, 소프트웨어 컴포넌트(20)에게 부가적인 동작을 제공하기 위해 존재하는 계층이 아니다. 도 1에 일반적으로 계층(600)으로 도시된 위저드, 테스팅, 또는 템플릿 계층(30)과 같은 계층들(3O)은 부가적인 보조 기능을 제공하기 위해 존재할 수 있다. 예를 들어, 위저드 계층(30)은 개발자로 하여금 신속하게 본 발명의 표준 컴포넌트를 생성할 수 있도록 보조하는 상호작용 도움말 기능(interactive help utility)의 세트를 제공할 수 있다. 테스팅 계층(30)은 기능 계층(30)으로부터의 소프트웨어 컴포넌트(20) 또는 패키지(42)를 이용(exercise)하며 테스트 결과를 로그에 기록하고, 개발자에게 테스트 완료 상태를 통지하는 소프트웨어 컴포넌트(20)를 포함할 수 있다. 템플릿 계층(30)의 소프트웨어 컴포넌트(20)는 본 발명의 표준 소프트웨어 컴포넌트를 위한 퍼시스턴스(persistance), 컬렉션(collection), 및 반복자(iterator)들의 C++ 구현을 제공할 수 있다.
소프트웨어 팩토리를 도시한 도 2를 참조하면, 구입하거나 생성된 소프트웨어 컴포넌트(20)는 프로그래밍 분야의 당업자에게 널리 알려진 라이브러리 또는 카탈로그 프로세스를 사용하는 장래의 용도를 위해서 목록(700)에 저장할 수 있다. 소프트웨어 컴포넌트(20) 인터페이스들은 대표하는 소프트웨어 컴포넌트(20)의 고유한 특성 및 동작에 의해 제한되는 소프트웨어 컴포넌트(20) 기능을 가지도록 표준화된다. 본 발명의 개념은 소프트웨어 어플리케이션 팩토리와 같은 소프트웨어 어플리케이션 조립 라인이다. 11에 도시된 바와 같이, 어플리케이션 요구조건들이 우선 결정된다. 이때, 현존하는 목록(700)을 조사하여(12) 소프트웨어 컴포넌트(20)가 새로운 어플리케이션 요구조건에 부합하는지를 검토한다. 소프트웨어 컴포넌트(20)로 존재하지 않는 시스템 요구조건의 경우에는 생성되거나(13) 구입될 수 있으며 목록에 부가할 수 있다. 다음에는, 새로운 어플리케이션은 스톡 소프트웨어 컴포넌트(20)들 및 새로운 소프트웨어 컴포넌트(20)로부터 생성될 수 있다. 어플리케이션은 소프트웨어 컴포넌트(20)들을 결합함으로써 새롭고 고유한 어플리케이션을 온-더-플라이로 생성할 수 있도록 소프트웨어를 재사용하는 것이 실제적으로 가능해 진다.
라이프사이클 플로우차트를 도시한 도 5를 참조하면, 본 발명의 방법은 라이프사이클 규칙의 세트를 사용하여 본 발명의 아키텍처를 변경시키는 어플리케이션 개발이 가능하다. 예를 들면, 소프트웨어 아키텍처를 정의하는 규칙들은 새롭게 디자인되거나 이미 존재하는 규칙들의 세트 또는 이들의 조합으로부터 선택된다. 따라서, 본 발명에 따른 방법을 사용하여 디자인된 소프트웨어 아키텍처는 초기 디자인(50)을 위해 소프트웨어 컴포넌트 규칙(210), 계층 규칙(310) 및 어셈블리 규칙(410)을 사용하여 소프트웨어 컴포넌트(20), 계층(30) 및 어플리케이션을 생성한다. 초기 디자인은 소정 개수의 초기 계층(30)들을 가질 수 있다.
구현된 시스템을 생산하고(52) 필요한 조정(adjustment)을 위하여 주기적으로 조사한다(54). 만일 어떤 계층(30)에 조정의 필요성이 있는 것으로 판단되면(16), 이를 제거하거나 변경할 수 있다(58). 부가적인 요구조건이 발생하면(60), 새로운 소프트웨어 컴포넌트(20)들이 생성되거나 기존의 소프트웨어 컴포넌트(20)들이 변경되거나(62, 64) 이들의 조합이 수행된다. 어플리케이션 요구조건에 따라 계층(30)이 추가되거나, 변경되거나, 삭제될 수 있다.
도 6을 참조하면, 필요한 모델 및 소프트웨어 컴포넌트(20)의 목록이 결정되면(70), 소프트웨어 컴포넌트(20)들은 논리적으로 분류된다(72). 이때, 필요한 소프트웨어 컴포넌트(20)가 이미 목록(700)에 존재하는지 결정해야 한다(74, 76). 가능하면 목록(700)으로부터 소프트웨어 컴포넌트(20)를 항상 재사용해야 한다(78). 호환성을 위하여 현재의 아키텍처에 부합하지 않는 소프트웨어 컴포넌트(20)들은 원래 요구조건의 의도는 유지하면서 재구성되어야 한다.
부가적인 소프트웨어 컴포넌트(20)들은 스펙과 현재의 목록(700)을 검토하여 필요에 따라서 생성될 수 있다(80).
본 발명의 소정의 규칙 및 디자인 방법을 사용하여, 소프트웨어 컴포넌트(20)는 주어진 기능의 필요성에 따라 디자인되고 구현된다. 예를 들면, 비즈니스 소프트웨어 컴포넌트(20)는 각 비즈니스 소프트웨어 컴포넌트(20)가 웰, 지하의 지리학적 특징(예를 들면, 단층), 로깅 트럭 또는 툴 또는 실행된 작업에 대한 정보와 같은 실세계의 객체 또는 프로세스에 대한 정보를 포함하도록 정의되고 구현될 수 있다. 시각 소프트웨어 컴포넌트(20)는 프레즌테이션 정보를 포함하도록 정의되고 구현될 수 있다. 다른 예를 들면, 데이터 소프트웨어 컴포넌트(20)는 비즈니스 소프트웨어 컴포넌트(20)의 상태를 보존하며, 비즈니스 소프트웨어 컴포넌트(20) 내의 데이터로의 액세스 및 데이터의 사용을 허용하는 소프트웨어 컴포넌트(20)로서 정의되고 구현될 수 있다. 예를 들면, 데이터 소프트웨어 컴포넌트(20)는 주어진 비즈니스 소프트웨어 컴포넌트(20)로부터 데이터를 추출하여 데이터베이스에 저장할 수 있다.
신규 또는 변경된 소프트웨어 컴포넌트(20)가 성공적으로 테스팅 및 인증 단계를 통과한 후에, 신규 또는 변경된 소프트웨어 컴포넌트(20)는 적정성(82)이 평가되어 목록(700)의 일부가 된다. 재사용 가능성이 있는 소프트웨어 컴포넌트(20)는 목록(700)에 추가된다(단계 88). 따라서 이러한 신규 또는 변경된 소프트웨어 컴포넌트(20)는 현재의 아키텍쳐에 통합될 수 있어, 현재 아키텍쳐를 확장하는, 즉 그들을 수용하기 위하여 하나 이상의 계층(30)을 추가하다(단계 86). 표준 인터페이스의 엄격한 구현을 통한 정의에 의하여, 하나의 계층(30)으로부터의 소프트웨어 컴포넌트(20)는 다른 임의의 계층으로부터의 임의의 소프트웨어 컴포넌트(20)에 의하여 사용될 수 있어서 계층(30) 관계를 별로 중요하지 않게 한다. 그러나, 실제로는 특정 소프트웨어 컴포넌트(20)가 다른 특정 소프트웨어 컴포넌트(20)에 의하여 주로 사용될 가능성이 크다.
도 1에 도시된 바와 같이, 본 발명의 계층(30) 각각은 본 명세서에 설명되고 청구 범위에 기재된 바에 따라 인터페이스 메커님즘을 사용하여 하나 이상의 다른 계층(30)과 인터페이스할 수 있다. 예를 들면, 본 발명의 일실시예에서, 본 발명의 디자인 방법론은 기초 계층(1000)을 포함하는 계층(30)의 소정의 초기 개수를 특정한다. 기초 계층(1000) 소프트웨어 컴포넌트(20)는 소프트웨어 컴포넌트(20)과, 예를 들면 메시징 계층(2000), 비즈니스 객체 계층(3000), 실시간 장치 계층(4000), 데이터 계층(5000), 처리 계층(6000), 시각 계층(7000), 템플릿 계층(8000), 비즈니스 규칙 계층(9000), 위저드 계층(10000), 테스팅 계층(11000), 인터셉터 계층(12000) 및 어플리케이션 계층(13000)과 같은 다른 계층(30)을 생성하는데 사용될 수 있다. 다른 계층(30)은 예를 들면 플로팅 계층(30)과 같은 다른 계층(30)이 생성될 수 있다.
도 7을 참조하면, 기초 계층(1000)은 어플리케이션을 구현하기 위한 초기의 기본 메커니즘을 제공하기 위하여 구비될 수 있다. 바람직한 실시예에서, 기초 계층(1000) 소프트웨어 컴포넌트(20)는 다른 소프트웨어 컴포넌트(20) 및 다른 계층(30)을 위한 적응가능한 초기 빌딩 블록을 형성한다.
기초 계층(1000)은 소프트웨어 컴포넌트(20)를 수집하는 메서드를 제공하는 GPCollection(1100);과, 통상적으로는 다른 소프트웨어 컴포넌트(20)에 결합된 복수개의 소프트웨어 컴포넌트를 포함하는 GPBase(1200);와, 소프트웨어 컴포넌트(20)를 정보의 소스 또는 싱크-소스 및 싱크는 아래에 설명된 바와 같은 의미를 가짐-로서 접속하기 위한 메서드를 제공하는 GPConnection(1300);과, 메시지에 기초한 비동기식 동작을 제공하는 GPEventHandler(1400); 및 장치 제어 메서드을 제공하는 GPDevice(1500)을 포함한다.
GPCollection(1100)은 데이터 항목의 그룹, 예를 들면 유전 데이터 곡선을 액세스하는 것을 허용한다. 바람직한 실시예에서는, GPCollection(1100)은 데이터 세트로의 액세스 및 유지보수를 가능하게 하는 메서드를 제공하며, 컬렉션 내의 소프트웨어 컴포넌트(20)의 개수를 결정하고 소프트웨어 컴포넌트(20)를 통한 반복을 가능하게 하는 COM 컬렉션 인터페이스의 구현이다. 바람직한 실시예에서는, 이러한 메서드는 하나 이상의 소정 유형의 식별항목, 예를 들면 명칭뿐만 아니라 컬렉션 내의 순서 위치에 의하여 특정 항목으로의 액세스를 제공한다.
GPBase(1200)은 다른 대부분의 소프트웨어 컴포넌트(20)에서 이용되는, 예를 들면 소프트웨어 컴포넌트(20)에 대한 소정의 범주 특성 부여뿐만 아니라 시간 및 날짜를 검색하거나 설정하는 소프트웨어 컴포넌트(20)를 지원한다. 범주 특성 프로퍼티는 소프트웨어 컴포넌트(20)의 등록 번호(CLSID) 및 소프트웨어 컴포넌트(20)마다 각각 다를 수 있으며 미리 정의되거나 프로그램적으로 정의된 소프트웨어 컴포넌트(20)의 "유형 특성"을 포함한 소프트웨어 컴포넌트(20)에 대한 설명적인 정보를 검색하거나 설정하는 것을 허용할 수 있다. 예를 들면, "비즈니스" 소프트웨어 컴포넌트(20)는 "곡선", "웰" 또는 "데이터" 유형을 구비할 수 있으며, 소프트웨어 컴포넌트(20)는 "곡선" 또는 "파라미터" 유형을 가질 수 있다.
GPConnection(1300)은 COM 접속 포인트 동작을 구현한다. 소프트웨어 분야의 당업자에게 이해되는 바와 같이, "접속"은 소프트웨어 컴포넌트(20)가 인터페이스를 호출하는 것("소스")과 소프트웨어 컴포넌트(20)가 인터페이스를 구현하는 것("싱크")의 두 개의 부분을 가지고 있다. "접속 포인트"는 소스에 의하여 노출된 인터페이스이다. 접속 포인트를 노출시킴에 의하여, 소스는 하나 이상의 싱크가 그 소스로 접속을 성립하도록 한다.
본 발명에서, 하나 이상의 GPConnection(1300) 메서드는, 소프트웨어 프로그래밍 분야의 당업자에게 용이하게 이해되는 바와 같이, 싱크로부터 소스까지의 인터페이스의 통로를 허용한다. 이 인터페이스는 소스에게 싱크의 멤버 기능 세트의 구현으로의 액세스를 허용한다. 예를 들면, 싱크에 의하여 실행된 이벤트를 시작하기 위하여, 소스는 싱크의 실행의 적절한 메서드를 호출할 수 있다. 본 바람직한실시예에서는, 문자열로부터 대용량의 데이터로의 포인터까지 그 어떤 것도 포함할 수 있는 메시지를 포함하는 GCMessage(1340)(도시되지 않음)만이 싱크와 소스 사이에 전송될 수 있다.
GPConnection(1300)은 다른 소프트웨어 컴포넌트(20)로 이벤트 또는 정보를 송수신하기 위하여 하나 이상의 인터페이스를 포함한다. 바람직한 실시예에서, 설계자는 이벤트 또는 정보, 예를 들면 메시지를 다른 소프트웨어 컴포넌트(20)로 전송할 필요가 있거나 싱크 인터페이스를 지원할 필요가 있는 소프트웨어 컴포넌트(20)에는 접속 소스 인터페이스를 반드시 결합시켜야 한다.
GPEventHandler(1400)는 프레임워크(40)과 프레임워크(40) 상에 형성된 어플리케이션 사이의 전에 등록된 콜백(callback)을 실행한다. GPEventHandler(1400)는 동기 또는 비동기식 이벤트를 처리할 수 있는 이벤트-핸들링 서비스, 소정 개수의 쓰레드를 조종하고 유지하기 위한 쓰레드 풀 서비스(thread pool service) 및 이벤트시 콜백 처리를 제공하고 어떤 유형의 메시지를 처리하도록 어떤 콜백이 등록되어 있는지를 추적하는 메서드를 포함한 이벤트 처리를 지원하는 인터페이스방법을 포함한다.
각 콜백은 한 유형의 메시지만을 처리하며, 어떤 유형의 메시지를 처리하도록 어떤 콜백이 등록되어 있는지를 추적하기 위하여 이벤트 핸들러 내에 인터페이스가 사용된다.
GPDevice(1500)는 하드웨어 장치와의 통신을 허용한다. GPDevice(1500)는 이벤트 핸들러가 장치로 정보 또는 이벤트를 전송할 수 있도록 하는 인터페이스뿐만아니라, 하드웨어로의 또는 하드웨어로부터의 통신을 제공하기 위한 인터페이스를 포함한다.
도 8을 참조하면, 메시징 계층(2000) 소프트웨어 컴포넌트(20)는 정보를 비즈니스 소프트웨어 컴포넌트(20)와 같은 다른 소프트웨어 컴포넌트(20)의 형태로 수신자에게 전달한다. 예를 들면, 바람직한 실시예에서, 메시징 소프트웨어 컴포넌트(20)는 비동기식 메시지 큐잉 및 통보를 제어한다. 메시징 계층(2000)은 메시지 생성을 처리하는 GPMessage(2100);와, 메시지 큐잉을 처리하는 GPMessage(2200); 및 메시지 라우팅을 처리하는 GPRouter(2300)의 세가지 팩키지를 포함한다.
GPMessage(2100)는 메시지 데이터 또는 정보를 관리하며, 메시지를 수신하는 소프트웨어 컴포넌트(20), 예를 들면, 소프트웨어 컴포넌트(20)의 싱크 인터페이스를 지정하기 위한 인터페이스를 포함하는, 다른 유형의 메시지에 대한 메시지 생성을 지원하는 인터페이스를 추가로 구비한다. 또한, GPMessage(2100)는 목적 소프트웨어 컴포넌트(20)의 세트 또는 컬렉션, 예를 들면 다중 소프트웨어 컴포넌트(20) 싱크 인터페이스을 제공하거나 특정 큐에 대한 정보를 포함하기 위한 인터페이스를 제공할 수 있다.
바람직한 실시예에서, GPMessage(2100)는 표준 정보 패킷, 즉, 메시지 본문은 메시지 본문에 IUnknown(1302) 인터페이스(도시되지 않음)를 포함하며, 메시지 유형을 식별하기 위하여 IGCType(1220)을 결합시킨다.
또한, 바람직한 실시예에서, 목적 소프트웨어 컴포넌트(20)를 지정하는 인터페이스는 라우팅 분석을 위한 타이밍 정보를 저장하는 것뿐만 아니라 싱크 또는 메시지 큐 인터페이스 중 하나를 지원한다. 이들은 하나 이상의 서비스 목적지로의 메시지 라우팅에 대한 지원을 포함한다. 메시지 큐 인터페이스는 메시지를 수신하여 큐의 내용이 변경되었다는 것을 등록 사용자에게 통지할 뿐만 아니라 비동기적으로 메시지를 큐잉한다.
GPRouter(2300)는 메시지 대기행렬를 통하여 메시지를 비동기적으로 전송할지 또는 싱크상의 직접적인 콜을 통하여 동기적으로 전송할지 결정하며, 목적지에 도달하기 위한 메시지의 경로를 검사하여 싱크에 직접적으로 메시지를 전송할지 또는 비동기적으로 라우팅되도록 메시지 대기행렬로 전송할지를 결정한다.
도 9를 참조하면, 바람직한 실시예에서, 비즈니스 오브젝트 계층(3000)은 비즈니스 소프트웨어 컴포넌트(20)를 생성하기 위하여 사용되는 기초 인터페이스를 특정한다. 바람직한 실시예에서, 비즈니스 소프트웨어 컴포넌트(20)는 정보의 저장 및 정보로의 액세스, 속성의 보호 및 웰, 로그, 센서 또는 베드와 같은 통상의 비즈니스 엔티티의 메서드를 제공한다.
따라서, 비즈니스 소프트웨어 컴포넌트(20)는 웰, 로그, 감마선 측정, 저항치 특정, 잡(job), 런, 패스, 센서, STAR 도구, 프랙쳐, 폴트, 베드, 베딩 표면, 시추공과 같은 실제 세계의 비즈니스 데이터를 표시할 수 있다. 비즈니스 소프트웨어 컴포넌트(20)는 데이터를 액세스하는데 이용되는 여러개의 속성과 메서드를 포함하지만, 다른 추가적인 동작은 거의 포함하지 않는다.
비즈니스 소프트웨어 컴포넌트(20)의 모든 가능한 관계를 모델링하고 정적 비즈니스 소프트웨어 컴포넌트 모델(31)을 생성하기 보다는, 바람직한 실시예에서는 비즈니스 소프트웨어 컴포넌트(20)는 다른 비즈니스 소프트웨어 컴포넌트(20)를 수집하는데 사용되는 일반화된 컬렉션 인터페이스를 구비한다. 다른 비즈니스 소프트웨어 컴포넌트(20)에 의하여 수집될 수 있는(또는 관련된) 비즈니스 소프트웨어 컴포넌트(20)의 유효한 유형은 비즈니스 규칙 계층(20) 내의 비즈니스 소프트웨어 컴포넌트(20)의 외부로 한정된다. 이것은 비즈니스 소프트웨어 컴포넌트(20)이 관계를 정의하는 규칙과는 개별적으로 유지되도록 한다. 이것은 또한 비즈니스 소프트웨어 컴포넌트(20)의 변경없이 상기 관계를 변경할 수 있게 한다.
예를 들면, 비즈니스 규칙은 비즈니스 소프트웨어 컴포넌트(20) 세트가 정의된 모델(31)과 관련되도록 할 수 있다. 새로운 비즈니스 소프트웨어 컴포넌트(20)가 정의되는 경우, 규칙 데이터베이스의 간단한 업데이트는 관계가 또한 정의되도록 할 수 있다. 따라서, 비즈니스 규칙은 새로운 비즈니스 소프트웨어 컴포넌트(20)가 기존의 모델(31)과 관련될 수 있도록 업데이트될 수 있으며, 기존의 비즈니스 소프트웨어 컴포넌트(20)는 변경되거나 재생성될 필요가 없다.
비즈니스 소프트웨어 컴포넌트(20)의 의미있는 관계를 생성함에 의하여, 소프트웨어 컴포넌트(20)는 실제 세계의 비즈니스가 필요로 하는 것을 모델링한다. 비즈니스 소프트웨어 컴포넌트(20)를 "블랙 박스" 데이터 컨테이너로 사용함에 의하여, 소프트웨어 컴포넌트(20)는 모델(31)을 렌더링하거나 분석하거나 또는 변경하는 추가적인 동작을 구현할 수 있다.
도 10을 참조하면, 복합 소프트웨어 컴포넌트(composite software component)와 일부 비즈니스 소프트웨어 컴포넌트(20)는 속성이 다른 비즈니스 소프트웨어 컴포넌트(20)인 "복합" 비즈니스 소프트웨어 컴포넌트(20)일 수 있다. 복합의 경우, 복합 비즈니스 소프트웨어 컴포넌트(20)는 비즈니스 규칙은 정적(static)-즉, 비즈니스 소프트웨어 컴포넌트(20)와 속성 소프트웨어 컴포넌트(20) 사이의 관계는 비즈니스 규칙에 의하여 강제되는 관계가 아니다. 복합은 소프트웨어 컴포넌트(20)사이에 홀-투-파트(whole-to-part) 관계가 있는 경우 사용된다; 예를 들면, 오일 웰에 대한 실시예의 경우, 복합 비즈니스 소프트웨어 컴포넌트(20) GCBed(310)는 상부 GCBeddingSurface(3011) 및 하부 GCBeddingSurface(3012)를 포함한다. 이러한 표면 소프트웨어 컴포넌트(20)는 이들 없이 GCBed(3010)가 정확하게 정의될 수 없다는 점에서 GCBed(3010)의 중요한 부분이다. 그러므로, GCBed(3010)는 복합 비즈니스 소프트웨어 컴포넌트(20)는 두 개의 속성, 자체만으로 비즈니스 소프트웨어 컴포넌트(20)인 GCBeddingSurface(3011)들을 더 포함한다. 다음에는, 복합 비즈니스 소프트웨어 컴포넌트(20)에 접근할 수 있도록 비즈니스 소프트웨어 컴포넌트(20)에 메서드가 제공된다.
복합 비즈니스 소프트웨어 컴포넌트(20)는 신규 비즈니스 소프트웨어 컴포넌트(20)가 생성될 때 생성되지 않는다. 그러므로, 각 복합 비즈니스 소프트웨어 컴포넌트(20)를 포함하는 비즈니스 소프트웨어 컴포넌트(20)를 생성하고 그것을 복합 비즈니스 소프트웨어 컴포넌트(20)내에 설치하는 것은 시스템 디자이너의 책임이다. 바람직한 실시예에서, 비즈니스 소프트웨어 컴포넌트(20)가 퍼시스턴트 소스로부터 검색되면, 복합 비즈니스 소프트웨어 컴포넌트(20)는 자동적으로 검색된다.
모든 비즈니스 소프트웨어 컴포넌트(20)는 보호되는 데이터로의 접근을 지원하기 위하여 비즈니스 소프트웨어 컴포넌트 인터페이스를 구비한다. 비즈니스 소프트웨어 컴포넌트(20)는 표준 이중 인터페이스 COM 컴포넌트로써 구현되며, 이것은 C++와 같은 초기 바인딩(early binding)을 지원하는 언어를 위하여 필요한 IUnknown(1302) 인터페이스와, 비주얼 베이직과 같은 후기 바인딩(late binding)을 지원하는 언어에 의하여 필요로 하는 IDispatch(1303) 모두를 지원한다는 의미이다. 비즈니스 소프트웨어 컴포넌트(20)는 인터페이스 또는 두 개의 인터페이스 모모두와 사용될 수 있도록 디자인되고 테스트될 수 있으며, 이것은 예를 들면, C++, 비주얼 베이직, JAVA, 스크립팅 언어 또는 웹 브라우저 자동화 또는 이들의 조합에 의해 지원되는 복수개의 컨테이너형에 사용되는 것을 허용한다.
표준 COM 인터페이스에 추가하여, 일부는 선택적이며 일부는 필수적인, 다른 표준 인터페이스가 비즈니스 소프트웨어 컴포넌트(20) 상에 존재할 수 있다. 예를 들면, 비즈니스 소프트웨어 컴포넌트(20)는 종종 어플리케이션의 중심이며, 복수개의 계층(30) 내의 다른 소프트웨어 컴포넌트(20)에 의하여 액세스될 필요성이 있다. 그러므로, 본 발명의 어플리케이션에는 추가적인 인터페이스뿐만 아니라 비즈니스 소프트웨어 컴포넌트(20)가 보통 존재한다. 그러나, 비즈니스 소프트웨어 컴포넌트(20)는 일반적으로 다른 많은 소프트웨어 컴포넌트(20)를 액세스할 필요가 없다.
도 9를 다시 참조하면, 추가적인 인터페이스는 모든 비즈니스 소프트웨어 컴포넌트(20)을 위한 기능상의 기초 레벨을 제공할 수 있다. 모든 비즈니스 소프트웨어 컴포넌트(20)는 다음의 필수적인 인터페이스를 지원한다: 소프트웨어컴포넌트(20)가 이와 관련된 다른 비즈니스 소프트웨어 컴포넌트(20)를 구비할 수 있게 하는 IGCAssociation(3110); 비즈니스 소프트웨어 컴포넌트(20)의 사용자가 비즈니스 소프트웨어 컴포넌트(20)의 퍼시스턴트 속성 명칭을 결정하게 하는, 예를 들면, 퍼시스턴트 속성 명칭이 데이터 저장장치에 기록되도록 하며 미래에 검색될 수 있도록 하는 것을 허용하는 IGCAttribute(3140); 소프트웨어 컴포넌트(20)의 내용을 덤핑하는 것을 허용하는 IGCObject(3130); 소프트웨어 컴포넌트(20)가 다른 소프트웨어 컴포넌트(20)와 계층적인 관계를 확립하고 유지시키도록 하는 IGCParents(3120); IGCType(1230); 및 표준 마이크로소프트 COM 인터페이스인 IPersistStream(101). 또한, 모든 비즈니스 소프트웨어 컴포넌트(20)는 표준의 고유 ID(GUID)를 제공한다.
또한, 소프트웨어 컴포넌트(20)는 이러한 인터페이스를 새로운 동작을 구현하도록 이용할 수 있다. 예를 들면, 모든 가능한 비즈니스 소프트웨어 컴포넌트(20) 인터페이스를 검색하도록 모델(31)을 트래버스(traverse)하는 루틴을 작성하는 대신, 프로그램 로직은 각 소프트웨어 컴포넌트(20)로부터 IGCType(1230)을 프로그램적으로 얻고 돌아오는 메시지를 검사함으로써 모델(31)을 트래버스할 수 있다. 이 트래버설(traversal)을 달성하는 방법 중에 하나는 템플릿 이터레이터 클래스(template iterator class)를 사용하여 액세스 관계를 용이하게 하는 것이다.
비즈니스 오브젝트 계층(3000) 소프트웨어 컴포넌트는 용이하게 확장될 수 있다. 비즈니스 소프트웨어 컴포넌트(20)는 의존성이 없도록 설계된 COM 컴포넌트이므로, 새로운 속성 및 동작이 하나의 비즈니스 소프트웨어 컴포넌트(20) 또는 모든 비즈니스 소프트웨어 컴포넌트(20)에 기존의 코드에 대한 약간의 변경 또는 변경없이 용이하게 추가될 수 있다.
바람직한 실시예에서, 비즈니스 오브젝트 계층(3000)은 모델이라 불리는 실제 세계의 비즈니스 엔티티로의 관련 비즈니스 소프트웨어 컴포넌트(20)의 그룹의 컬렉션을 허용하는 GPModel(3100); 및 비즈니스 소프트웨어 컴포넌트(20) 내의 대용량 이진 데이터의 저장을 허용하는 GPBLOB(3200)을 포함한다.
GPModel(3100)은 비즈니스 소프트웨어 컴포넌트(20)가 특정한 기능을 달성하기 위하여 결합한 인터페이스 세트를 포함한다.
GPBLOB(3200)은 비즈니스 소프트웨어 컴포넌트(20) 내에 저장된 대용량 이진 데이터에 관한 정보를 제공하는 인터페이스들을 제공한다. 이 인터페이스들은 선택적이며, 비즈니스 소프트웨어 컴포넌트(20)의 인스턴스의 개수가 매우 많은 경우에만 사용된다. 예를 들면, 로깅 측정의 그룹이 웰 로그의 부분을 설명하는 GPBLOB(3200)으로 수집될 수 있다. 프로그래밍 분야의 당업자에게 용이하게 이해되는 바와 같이, "BLOB"는 binary large object의 약자이다.
도 11을 참조하면, 실시간 장치 계층(4000)은 다운-홀 로깅 툴(down-hole logging tool)로부터 트럭에 실린 컴퓨터에 이르는 실시간 장치와의 통신 및 실시간 장치용 이벤트 핸들링을 지원한다. 실시간 장치 계층(4000)은 사용자가 실시간 장치를 다른 실시간 장치와 함께 등록하도록 허용하는 방법을 재공하는 인터페이스를 포함한, 장치가 접속된 다른 소프트웨어 컴포넌트(20)와의 통신하도록 허용하는표준 통신 및 이벤트 처리 인터페이스를 지원하는 GPRealTime(4100)을 포함한다.
도 12를 참조하면, 데이터 계층(5000)은 비즈니스 소프트웨어 컴포넌트(20)를 위한 데이터 퍼시스턴스 서비스를 제공한다. 데이터 계층(5000)은 또한 데이터로의 액세스를 제공한다. 데이터 계층(5000)은 데이터 소스에 데이터를 기록하거나 데이터 소스로부터 데이터를 판독하도록 하는 GPPersist(5100); 및 특정 유형의 데이터로의 액세스를 제공하는 GPDataAccess(5200)을 포함한다.
바람직한 실시예에서, GPDataAccess(5200)는 비즈니스 소프트웨어 컴포넌트(20)에 특정한 데이터 포맷에 대한 퍼시스턴스를 제공하는 GPDataFormat(52100); 이용가능한 등록된 데이터 포맷의 목록을 보유하는 소프트웨어 컴포넌트(20)를 생성하는데 이용되는 GPDataService(52200); 데이터 서비스로부터 소프트웨어 컴포넌트(20)가 검색하는 정보를 위한 요건을 성립시키는 GPWIndowedIO(52300); 로우-레벨 하드웨어 장치(예를 들면, 디스크 및 테입) 입/출력("I/O") 액세스에 사용되는 GPDataIO(52400); 하나의 측정 시스템으로부터 다른 시스템으로의 데이터 변환에 이용되는 GPUnitsConverter()(52500); 및 데이터 파일로부터 검색된 정보에 대한 데이터 식별자 및 명명법(naming convention)을 제공하는 GPDataDictionary(52600);를 포함한다. GPDataAccess(5200)에 의해 예시된 바와 같이, 본 발명에 의한 아키텍쳐의 특징은 GPDataAccess(5200)와 같은 팩키지가 GPDataFormat(52110)과 같은 다른 팩키지를 포함하는 것을 허용하는 것을 주목하는 것이 중요하다.
바람직한 실시예에서, GPDataFormat(52100)은 특정한 데이터-포맷 소프트웨어 컴포넌트(20)에 의해 알려진 포맷에게 비즈니스 소프트웨어 컴포넌트(20) 퍼시스턴스를 제공하며, 비즈니스 소프트웨어 컴포넌트(20)에 의한 송수신을 위한 표준 메시징을 제공하는 인터페이스는 물론 일반 메시지 핸들러가 특정 기능을 호출하는 것을 허용하기 위하여 특정 파일 포맷을 위한 비즈니스 소프트웨어 컴포넌트(20) 퍼시스턴스를 지원하는 인터페이스를 포함한다. 바람직한 실시예에서, IGCBaseDataFormat(51210)은 데이터-포맷 소프트웨어 컴포넌트(20)를 위하여 반드시 구현되어야 하는 인터페이스이며, 소정의 포맷에 따라 장치 및 데이터를 조작할 수 있도록 하는 특성을 포함한다. 바람직한 실시예에서, IGCBaseDataFormat(51210)은 데이터-포맷 소프트웨어 컴포넌트(20)가 비즈니스 소프트웨어 컴포넌트(20)에 의하여 송수신하기 위한 표준 메시징을 제공하기 위하여 결합되어야 하는 IGCDataFormat(52120)을 포함한다.
바람직한 실시예에서, GPDataServiceIO(52200)는 판독 또는 기록 액세스를 위하여 이용가능한 등록된 데이터 포맷의 목록을 포함한 소프트웨어 컴포넌트(20)를 생성하는데 사용될 수 있다.
바람직한 실시예에서, GPWindowedIO(52300)는 소프트웨어 컴포넌트(20)가 데이터 서비스로부터 검색하는 정보에 대한 요구를 지정한다. GPWindowedIO(52300)는 소프트웨어 컴포넌트(20)가 데이터 서비스로부터 검색하는 정보에 대한 요구를 지정하는 IGCWindowedIO(52310)를 포함한다. 본 바람직한 실시예에서는, IGCWindowedIO(52310)는 IGCWindowedIO(52310)는, 존재하는 경우 윈도우형 I/O 간격(windowed I/O interval)의 오프셋은 주세트의 현재 작업 레벨 데이터인OffsetFromCurrent(52311); 오프셋의 최상위 오프셋이 현재 작업중인 레벨로부터의 레벨에 있는 TopOffset(52312); 오프셋의 최하위 오프셋이 현재 작업중인 레벨로부터의 레벨에 있는 BottomOffset(52313); 주어진 간격에서 반환되는 레벨 스페이싱인 Increment(52314); 데이터 세트의 레벨 스페이싱이 매치하지 않는 경우 수행하여야 하는 액션을 설명하는 ResampleType(52315); 현재 작업 레벨보다 상위의 데이터, 예를 들면, 곡선 간격이 데이터의 시작/종료점을 벗어나거나 NULL값을 초과하는 경우 어떻게 되는지를 표시하는 TopBoundType(52316); 현재 작업 레벨보다 하위의 데이터, 예를 들면, 곡선 간격이 데이터의 시작/종료점을 벗어나거나 NULL값을 초과하는 경우 어떻게 되는지를 표시하는 BottomBoundType(52317); 반환된 데이터 종류인 DataType(52318); 및 예를 들면 랜덤 또는 순차 액세스인 AccessType(52319)를 포함한다.
바람직한 실시예에서, GPDataIO(52400)는 하위-레벨 장치(예를 들면, 디스크 및 테입) I/O 액세스를 위한 인터페이스를 지정하며, GPUnitsConverter(52500)는 하나의 측정 시스템으로부터 다른 시스템으로의 데이터 변환에 이용되는 인터페이스를 포함하며, GPDataDictionary(52600)는 데이터 파일로부터 검색된 정보에 대한 데이터 식별 및 명명법(naming convention)을 제공하는 인터페이스를 포함한다.
도 13을 참조하면, 처리 계층(6000)과 관련된 소프트웨어 컴포넌트(20)는 처리 계층(6000)에 의하여 지정된 인터페이스를 구비할 필요가 있으나, 비즈니스 소프트웨어 컴포넌트(20) 인터페이스를 통하여 비즈니스 소프트웨어 컴포넌트(20)를 또한 액세스할 필요가 있다. 처리 계층(6000)은 알고리즘적인 처리를 포함한 처리플로우(또는 프로세스 모델)의 인스턴스화 및 제어를 제공한다. 알고리즘적인 처리는 요구된 인터페이스를 구비한 GPProcessingObject(6200)에 의하여 정의된 패턴을 따른다.
처리 계층(6000)은 주처리 인터페이스를 정의하는 GPProcessor(6100); GPProcessor(6100)가 이해하는 처리 소프트웨어 컴포넌트(20)의 유형을 처리하는 GPProcessingComponent(6200); GPHistoryModel(6300); GPProcessingModel(6400); 및 GPProcessingConnection(6500)를 포함한다. 또한, 처리 계층(6000)은 IGCAttributes(3140), IGCObject(3130), IGCParents(3120) 및 IGCAssociation(3110)을 결합한다. 본 명세서에 사용된 바와 같이, 접속 컴포넌트는 하나의 처리 객체의 출력과, 출력이 입력과 호환성이 있다고 추가적으로 입증된 다른 처리 객체의 입력 사이의 접속으로 이해하여야 한다.
GPProcessor(6100)는 처리 계층(6000)으로의 주 인터페이스이며, 입력, 출력, 파라미터 및 그들이 서로 어떻게 접속되어 있는지와 함께 처리 컴포넌트를 포함한 모든 외부 통신을 처리한다. 이것은 처리를 위한 파라미터 및 I/O 컴포넌트의 광범위한 셋업을 허용한다. GPProcessor(6100)는 클라이언트 소프트웨어 컴포넌트(20)가 프로세스와 통신-소프트웨어 컴포넌트(20)가 하나의 계층(30)이 다른 계층(30)의 소프트웨어 컴포넌트(20)와 통신하도록 하는 것을 포함함-하도록 한다.
바람직한 실시예에서, GPProcessor(6100)는 프로세스 모델(31) 내의 필터의 요구를 추적하며, 이러한 요구를 만족하기 위하여 질의 및 WindowedIO 파라미터를변경하며, 모델(31)을 통과하는 데이터의 흐름을 모니터링/최적화하며, 처리 흐름을 관리하기 위하여 요구되는 다른 기능을 수행한다. GPProcessor(6100)는 프로세스 모델을 위한 외부와의 통신-프로세스의 시작 및 정지와 모델(31)의 변경을 포함함-을 관리하기 위하여 IGCProcessor(6110)를 포함한다. 예를 들면, 사용자가 IGCProcessor(6110)에 질의를 하게되면, IGCProcessor(6110)는 프로세스 모델(31)의 소프트웨어 컴포넌트(20)의 I/O 요청을 매칭시키기 위하여 질의를 변경한다. IGCProcessor(6110)는 또한 처리 소프트웨어 컴포넌트(20)가 프로세스 모델(31)에 부가되도록 허용하며 모델(31)의 소프트웨어 컴포넌트(20) 사이의 접속의 유효성을 검사한다. 또한 싱크에 접속된 출력, 즉 퍼시스트된 것은 추적되며 출력을 생성한 프로세스 모델(31)은 비즈니스 소프트웨어 컴포넌트(20) 상에 히스토리 엔트리로써 첨부되어 있다. 바람직한 실시예에서, IGCProcessor(6110)는 처리 소프트웨어 컴포넌트(20)에 의해서 요구되는 입력, 출력 및 파라미터의 요약 목록을 구비하고 있다.
GPProcessingObject(6200)는 주프로세서 GPProcessor(6100)가 이해할 수 있는 필터, 동기화 소프트웨어 컴포넌트(20), 소스, 싱크, 및 그래피컬 소프트웨어 컴포넌트(20)를 포함한 처리 소프트웨어 컴포넌트(20)의 종류를 정의하고 있다. 바람직한 실시예에서, 처리 소프트웨어 컴포넌트(20)는, 예를 들어 시각 표시 페이지의 탭뿐만 아니라, 입력(접속), 출력(접속) 및 파라미터(접속 및 상수)의 셋업을 허용하기 위한 개별적인 인터페이스를 구비하고 있다.
GPProcessingObject(6200)는 모든 처리 소프트웨어 컴포넌트(20)가 결합하는공통 인터페이스인 IGCProcessingObjectManager(6210)를 포함한다. 또한, GPProcessingObject(6200)는 사용자 소프트웨어 컴포넌트(20)가 호출되는 경우 소정의 메서드의 세트를 구현하는 것을 보장하기 위하여 반드시 상속되어야 하며, (예를 들면, 연산 함수에 사용될 수 있는) 입력의 명칭과 지원하는 소프트웨어 컴포넌트(20)의 유형을 저장하며, (예를 들면 연산 함수에 사용될 수 있는) 출력의 명칭과 지원하는 소프트웨어 컴포넌트(20)의 유형을 저장하는 인터페이스를 포함한다. 또한, GPProcessingObject(6200)는 IGCParameterObject(6250), IGCAttributes(3140), IGCObject(3130), IGCParents(3120) 및 IGCAssociation(3110) 인터페이스를 포함한다.
바람직한 실시예에서, IGCProcessingObjectManager(6210)는 모든 처리 소프트웨어 컴포넌트(20)가 결합하는 공통 인터페이스이며, 언제 소프트웨어 컴포넌트(20)가 소정의 메서드를 시작할 준비가 되는 지와 데이터를 송신할 준비가 되는지를 결정하는 상태 머신을 유지한다. IGCProcessingObjectManager(6210)는 사용자 소프트웨어 컴포넌트(20)가 호출되는 경우 소정의 기능을 구현하는 것을 보장하기 위하여 반드시 상속되어야 하는 기초 처리 소프트웨어 컴포넌트(20)인 IGCBaseProcessingObject(6220)에 의존한다.
IGCInputObject(6230)는 입력의 명칭 및 지원하는 소프트웨어 컴포넌트(20)의 유형을 저장한다. IGCInputObject(6230)는 모델(31)내의 접속 및 처리 소프트웨어 컴포넌트(20) 모두에 추가될 수 있다. WindowedI/O 파라미터 컴포넌트와 범위 유효성 컴포넌트는 입력 특성을 설명하기 위하여 소프트웨어 컴포넌트(20)에 추가될 수 있다.
바람직한 실시예에서, IGCInputObject(6240)는 비즈니스 소프트웨어 컴포넌트(20)이며, 따라서 요구되는 비즈니스 소프트웨어 컴포넌트(20) 인터페이스를 포함한다. IGCInputObject(6240) 인터페이스는 또한 IGCType(1230) 및 IGCConnectionSink(1320)를 결합한다. IGCOutputObject(6240)는 출력의 명칭 및 지원하는 소프트웨어 컴포넌트(20)의 유형을 저장한다. IGCOutputObject(6230)는 모델(31)내의 접속 소프트웨어 컴포넌트(20) 및 처리 소프트웨어 컴포넌트(20) 모두에 추가될 수 있다. WindowedI/O 파라미터 소프트웨어 컴포넌트(20)는 출력 특성을 설명하기 위하여 그것에 추가될 수 있다.
바람직한 실시예에서, IGCParameterObject(6250)는 받아들일 수 있는 입력 파라미터를 정의한다. 파라미터는 입력값과 같이 변경될 수 있으나, 또한 상수값으로 세팅될 수 있다. IGCParameterObject(6250)는 모델(31)내의 접속 소프트웨어 컴포넌트(20) 및 처리 소프트웨어 컴포넌트(20) 모두에 추가될 수 있다. WindowedI/O 파라미터 컴포넌트와 범위 인증 컴포넌트는 파라미터 특성을 설명하기 위하여 그것에 추가될 수 있다.
IGCParameterObject(6250)는 비즈니스 소프트웨어 컴포넌트(20)이며, 따라서 요구되는 비즈니스 소프트웨어 컴포넌트(20) 인터페이스를 포함하며 IGCType(1230) 및 IGCConnectionSink(1320)를 결합한다. IGCParameterObject(6250)는 또한 GPHistoryModel(6300), GPProcessingModel(6400) 및 GPProcessingConnection(6500)을 결합한다.
GPHistoryModel(6300)은 출력을 생성하기 위하여 요구되는 완전한 프로세스 모델(31) 및 질의 모델(31)을 저장한다. 예를 들면, 주어진 입력 곡선이 관련된 히스토리 모델을 구비하고 있다고 가정하면, 현재의 소프트웨어 컴포넌트(20)의 비가공 데이터로부터 완전한 히스토리를 얻기 위하여 사용자는 입력 소프트웨어 컴포넌트(20)에 회귀적으로(recursively) 질의를 하여야 한다. GPHistoryModel(6300)은 소프트웨어 컴포넌트(20)가 어떻게 생성되었는지 히스토리를 저장한다. GPHistoryModel(6300)은 출력 소프트웨어 컴포넌트(20)을 생성하는데 사용되는 프로세스(예를 들면, 알고리즘 및 입력)의 완전한 히스토리를 저장하는데 사용되는 기초 히스토리 소프트웨어 컴포넌트(20)인 IGCHistoryModel(6310)을 포함한다. 사용자는 출력 소프트웨어 컴포넌트(20)가 어떻게 생성되었는지 히스토리를 저장하기 위하여 프로세스 모델(31) 및 질의 모델(31)을 IGCHistoryModel(6310)에 추가할 수 있다. IGCHistoryModel(6310)는 비즈니스 소프트웨어 컴포넌트(20)이며, 따라서 요구되는 비즈니스 소프트웨어 컴포넌트(20) 인터페이스를 포함하며 유형, 데이터 및 시간 인터페이스와 같은 GPBase(1200)을 결합한다.
GPProcessingModel(6400)은 특정한 처리 플로우를 형성하는데 사용되는 처리 소프트웨어 컴포넌트(20) 및 접속 소프트웨어 컴포넌트(20)를 포함한다. GPProcessModel(6400)은, 예를 들면 다른 입력 질의와 함께 퍼시스트되고 재사용될 수 있으며, 또는 출력 소프트웨어 컴포넌트(20)에 첨부된 히스토리와 함께 저장될 수 있다. GPProcessingModel(6400)은 처리 소프트웨어 컴포넌트(20), 접속 및 IGCType(1230)을 포함하는 프로세스 모델인 IGCProcessingModel(6410); 및 모든 소프트웨어 컴포넌트(20)를 위한 기초 소프트웨어 컴포넌트(20)인 IGCProcessingObject(6420)를 포함한다.
IGCProcessingModel(6410)은, 예를 들면 다른 입력 질의와 함께 퍼시스트되고 재사용될 수 있으며, 또는 출력 소프트웨어 컴포넌트(20)로의 히스토리 첨부사항으로 저장될 수 있다.
IGCProcessingObject(6420)는 임의의 종류의 처리 소프트웨어 컴포넌트(20)을 표시할 수 있는 비즈니스 소프트웨어 컴포넌트(20)이다. IGCProcessingObject(6420)는 데이터 출력을 위하여 접속된 프로세서로의 포인터를 구비하고 있다. 소프트웨어 컴포넌트(20)의 상태는 처리되는 시간동안 유지된다.
GPProcessingConnection(6500)은 처리 소프트웨어 컴포넌트(20) 사이의 접속을 제공한다. 프로세스 모델(31)에는 처리 소프트웨어 컴포넌트(20)가 요구하는 모든 입력, 출력 및 파라미터에 대하여 하나의 접속 소프트웨어 컴포넌트(20)가 존재한다. 접속되지 않은 출력은 종료된다. 파라미터는, 예를 들면 프로퍼티 시트에서 상수로 셋업될 수 있으며, 소스에 접속되어 질의될 수 있다.
본 바람직한 실시예에서, 프로세스 모델(31)에는 처리 소프트웨어 컴포넌트(20)가 요구하는 모든 입력, 출력 및 파라미터에 대하여 하나의 IGCProcessingConnection(6510)이 존재한다. 접속되지 않은 입력은 질의된다. 접속되지 않은 출력은 종료된다. IGCProcessingConnection(6510) 파라미터는, 예를 들면 속성 시트에서 상수로 셋업될 수 있으며, 접속되지 않은 경우에는 질의된다. IGCProcessingConnection(6510)은 비즈니스 소프트웨어 컴포넌트(20)이며, 비즈니스 소프트웨어 컴포넌트(20) 인터페이스를 포함하며 IGCType(1230) 및 IGCConnectionSink(1320)를 결합한다. 더 많은 유연성을 위하여 기초 유형이 사용될 수 있다. 예를 들면, 주어진 소정 유형 "GCGr"의 입력 소프트웨어 컴포넌트(20)는 "GCGr" 유형의 출력 컴포넌트에 접속되어야 하며 "GCGr" 유형의 입력은 또한 "GCCx" 또는 "GCCy" 유형의 출력 컴포넌트에 접속될 수 있다.
IGCProcessingConnectCondition(6520) 인터페이스는 처리 소프트웨어 컴포넌트(20) 사이에서 커넥터의 기능을 수행하지만, 처리 브랜치가 계속되는지 여부를 결정하는 조건 익스프레션을 허용한다. 조건 소프트웨어 컴포넌트(20)는 접속에 대한 적합 조건을 포함한다. 접속에 대하여 하나 이상의 조건이 존재할 수 있으며, 각 외향 브랜치(outgoing branch)마다 하나 이상의 조건이 존재할 수 있다. 바람직한 실시예에서, "true" 응답은 처리 브랜치가 사용중인 것을 의미한다.
IGCProcessingConnectCondition(6520)은 비즈니스 소프트웨어 컴포넌트(20)이며, 따라서 비즈니스 소프트웨어 컴포넌트(20) 인터페이스를 포함한다. 또한, IGCProcessingConnectCondition(6520) 인터페이스는 또한 IGCType(1230), IGCConnectionSink(1320) 및 IGCConnectionSource(1310)를 결합한다.
도 14를 참조하면, 시각 계층(7000)은 정보와의 사용자 상호작용의 표시를 제공한다. 바람직한 실시예에서, 시각 계층(7000) 아키텍쳐는 모델-뷰-컨트롤러 디자인 패턴에 기초한다. 시각 계층(7000) 시각 소프트웨어 컴포넌트(20)는 (IGCViewModel(7210)에 의하여 식별되는) 시각 모델(7001), (통상적으로 IGCView(7110) 및 IGCBaseView(7120)을 노출시키는 완전한 ActiveX제어인)뷰(7002), 및 (IGCViewController(7310)에 의하여 식별되는) 컨트롤러(7003)를 포함한다. 시각 모델(7001), 뷰(7002) 및 컨트롤러(7003)는 GPConnection(1300), GPMessage(2100) 및 GPEventHandler(1400)와 같은 메시징을 이용하여 접속되며, 각각은 추가적인 동작을 제공하기 위하여 첨부된 하나 이상의 메시지 핸들러를 구비할 수 있다. 또한, 시각 소프트웨어 컴포넌트(20)는 접속 싱크를 구비한다.
스톡 시각 모델(7001) 및 컨트롤러(7003) 소프트웨어 컴포넌트(20)는 유사하며, 이벤트 핸들러, 접속 소스 및 접속 싱크 인터페이스를 포함한다. 스톡 시각 모델(7001) 및 컨트롤러(7003) 소프트웨어 컴포넌트(20)는 다른 메시지 핸들러를 구비하고 있으므로 동작이 다르다. 뷰(7002)는 커스텀 소프트웨어 컴포넌트(20)(통상적으로 완전한 ActiveX 컨트롤임)이지만, 뷰(7003)는 이벤트 및 접속 핸들러를 포함하는 스톡 뷰 동작을 구현하는 인터페이스를 결합한다는 점에서 뷰(7002)는 시각 모델(7001)과 컨트롤러(7003)와 유사하다.
바람직한 실시예에서, 시각 소프트웨어 컴포넌트(20) 또는 컨트롤러(7003)는 스톡 시각 모델(7001) 및 컨트롤러(7003)뿐만 아니라 뷰(7002)를 위한 커스텀 ActiveX 컨트롤을 포함하고 있다. 본 바람직한 실시예에서, 시각 모델(7001) 및 컨트롤러(7003)는 동작이 동작 컴포넌트를 첨부함에 의하여 변경되는 스톡 소프트웨어 컴포넌트(20)이다. 뷰(7003)는 복수개의 소프트웨어 컴포넌트(20)가 합성되어 있으나, 동작을 커스텀화하기 위하여 더 많은 주의가 필요하다. 본 바람직한 실시예에서, 시각 모델(7001), 뷰(7002) 및 컨트롤러(7003)는 COM 소프트웨어컴포넌트(20)이다.
시각 계층(7000)은 또한 비즈니스 소프트웨어 컴포넌트(20)의 시각적인 표시를 제공하는 GPView(7100); 데이터 및 연산 로직을 처리하는 GPViewModel(7200); 및 사용자 상호작용을 관리하는 GPViewController(7300);를 포함한다.
GPView(7100)은 패턴의 시각적인 부분을 구현하며, 비즈니스 소프트웨어 컴포넌트(20)의 시각적인 표시를 제공한다. GPView(7100)는 스톡 뷰 동작을 포함하는 IGCView(7110); 및 각 뷰(7002)에 대하여 요구되는 커스텀화된 동작의 정의를 강제하는 IGCBaseView(7120)를 포함한다. 뷰(7002)(예를 들면, 로그 뷰어 또는 그래피컬 디스플레이)는 이벤트 핸들링 및 접속을 위하여 스톡 뷰 모델(7001) 및 컨트롤러가 노출시키것과 동일한 인터페이스 세트를 노출시키는 IGCView(7110)을 결합하여야 한다. 그러나, IGCView(7110)는 또한, 이러한 용어들이 프로그래밍 분야의 당업자에게 용이하게 이해될 수 있는 바와 같이, 드래그-앤-드롭을 위한 표준 OLE 인터페이스를 추가하는 경우 기초 드래그-앤-드롭 동작을 제공한다.
IGCBaseView(7120)는 각 뷰(7002)에 대하여 요구되는 커스텀화된 동작의 정의를 강제한다. IGCBaseView(7120)은 시각 모델(7001)로 뷰(7002)의 데이터 요청을 통신하기 위한 InitializeModel()(7121);필요에 따라 뷰(7002)를 다시 그리기 위한 UpdateView()(7122); 및 현재의 소프트웨어 컴포넌트(20)가 무엇인지 알아내기 위한 GetObject()(7123)를 포함한다. 뷰(7002)는 IGCBaseView(7120)을 반드시 구현하여야 한다. 각 뷰(7002)는 이 인터페이스에 대하여 다른 요구를 가지므로 IGCView(7120)에 대한 스톡 구현은 없다. InitializeModel()(7121)은 시각모델(7001)로 뷰(7002)의 데이터 요구를 통신하기 위한 커스텀 로직을 구비하고 있다. UpdateView()(7122)는 스톡 UpdateViewHandler 소프트웨어 컴포넌트(20)에 의하여 호출되어 뷰(7002)를 다시 그리게 된다. GetObject()(7123)는 힛-테스팅(hit-testing)을 반드시 구현하여야 하며, IGCView(7110)의 드래그-앤-드롭 구현에 의하여 사용된다.
GPViewModel(7200)은 모델-뷰-컨트롤러 패턴의 시각 모델(7001) 부분을 구현하며, 시각적으로 조작되는 비즈니스 소프트웨어 컴포넌트(20)의 관리를 담당한다. GPViewModel(7200)은 IGCViewModel(7210)을 포함한다.
시각 모델(7001)은 IGCViewModel(7210), IGCConnectionSink(1320) 및 IGCConnectionSource(1310)를 노출시킨다. IGCViewModel(7210)은 비즈니스 모델(31)을 위한 래퍼(wrapper)로써 기능하며, 외부 소프트웨어 컴포넌트(20)를 등록하는 방법을 제공한다. IGCConnectSink(1320)은 적절한 메시지 핸들러로 라우팅된 메시지를 수신한다. 외부로 나가는 메시지는 IGCConnectionSource(1310)를 통하여 전송된다. 메시지 핸들러 소프트웨어 컴포넌트(20)는 IGCEventHandler(1410)를 통하여 첨부된다. IGCViewModel(7210)은 래핑하는 비즈니스 모델(31)로의 포인터를 포함한다. 일반적으로, 비즈니스 모델(31)에 대한 변경은 비즈니스 모델(31)이 등록된 뷰(7002)를 향한 업데이트 메시지를 생성한다.
IGCViewModel(7210) 및 IGCViewController(7310)는 스톡 소프트웨어 컴포넌트(20)이다. 커스텀 뷰(7002)는 뷰(7002)를 새성하기 위하여 스톡 컴포넌트 IGCView(7110)를 결합하는 완전한 액티브 템플릿 라이브러리(Active TemplateLibrary, "ATL") 컨트롤이다. 또한, 시스템으로의 리드-온리 액세스가 허용되도록 뷰어가 지정되는 리드-온리 모드; 사용자가 보는 것뿐만 아니라 모델을 편집할 수 있는 편집 모드; 또는 구성적으로 리드-온리 모드 또는 편집 모드;에서는 사용자에게 시각 계층(7000) 인터페이스가 제공될 수 있다.
도 15를 참조하면, 모델-뷰-컨트롤러(Model-View-Controller, "MVC") 디자인 패턴은 세 개의 논리 하위-컴포넌트인 시각 모델(7001), 뷰(7002) 및 컨트롤러(7003)를 포함한다. 시각 모델(7001)은 데이터 및 연산 로직을 포함한다. 뷰(7002)는 시각 모델(7001) 또는 그 일부를 사용자에게 제공한다. 컨트롤러(7003)는 키입력 및 포인터-장치에 의해 생성된 입력과 같은 사용자 상호작용을 처리한다. 기초 MVC 디자인 패턴은 본 발명에서 로그 뷰어 또는 편집기와 같은 시각 계층(7000) 소프트웨어 컴포넌트(20)를 위하여 사용된다. 일반적으로, 뷰(7002)는 시각 모델(7001)이 업데이트가 필요하다는 것을 뷰(7002)에 통보할 수 있도록 시각 모델(7001)과 관련되어야 한다. 시각 모델(7001)은 업데이트 통보를 요청하도록 뷰(7002)가 사용할 수 있는 어떤 종류의 등록 메커니즘을 구비하여야 하며, 뷰(7002)는 시각 모델(7001)이 사용할 수 있는 업데이트 메커니즘을 구비하여야 한다.
뷰(7002)는 또한 컨트롤러(7003)와 관련된다. 초기에 뷰(7002)에 의하여 캡쳐된 사용자 상호작용은 해석을 위하여 컨트롤러(7003)로 전달된다. 다음에는, 컨트롤러(7003)는 필요한 경우 상호작용의 결과로 취해야 하는 액션을 시각 모델(7001)에 통보한다.
도 15는 세 개의 MVC 하위-컴포넌트 사이의 통신의 주 경로를 도시하고 있으나, 이 세 컴포넌트 사이에는 다른 상호작용도 또한 존재할 수 있다. 예를 들면, 뷰(7002)는 표시하기 위해서 필요한 데이터를 시각 모델(7001)로부터 얻어야 하며, 컨트롤러(7003)는 사용자 상호작용 이벤트를 처리하기 위하여 시각 모델(7001)의 액션을 요청할 필요가 없다. 추가적인 실시예로서, 시각 모델(7001)로부터의 업데이트 통지가 되지 않는 이벤트로 인하여 뷰(7002)는 업데이트 할 필요가 있을 수도 있다.
도 16을 참조하면, 템플릿 계층(8000)에서 찾을 수 있는 템플릿 소프트웨어 컴포넌트(20)는 C++ 언어에 사용되는 것과 같은 퍼시스턴스, 컬렉션 및 이터레이터의 구현을 표준 소프트웨어 컴포넌트(20)에게 제공한다. 템플릿 소프트웨어 컴포넌트(20)는 표준 기능의 구현을 용이하게 하고 소프트웨어 컴포넌트(20)의 기능을 확장시키는 유지보수 노력을 감소시키기 위하여 소프트웨어 컴포넌트(20)의 구현에 사용될 수 있다.
바람직한 실시예에서, 본 발명의 템플릿 시스템은 본 발명의 시스템의 일부 기능을 지원하는 C++ 클래스의 세트이며, COM 소프트웨어 컴포넌트(20)가 아니다. 이것은 템플릿 소프트웨어 컴포넌트(20)는 인터페이스를 구비하고 있지 않으며, COM 로직을 통하여 구현되는 것이 아니라는 것을 의미한다. 대신에, 이들은 C++ 템플릿을 위한 표준 구현 기술을 이용하여 구현된다. 유사한 방식으로, 예를 들면, JAVA, FORTRAN, 에셈블러, SQL 또는 이들의 조합과 같은 다른 언어를 위한 템플릿이 제공될 수 있다.
템플릿 계층(8000)은 퍼시스턴스의 C++ 구현을 제공하는, 예를 들면 데이터 판독 및 기록을 제공하는 GCPersistStreamImpl(8100); 컬렉션이 C++ 구현을 제공하는, 예를 들면 관련 비즈니스 소프트웨어 컴포넌트(20)가 세트(컬렉션)로 그룹화되는 것을 허용하는 GCCollectionImpl(8200); 이터레이션의 C++ 구현을 제공하는, 예를 들면 소프트웨어 컴포넌트(20)의 컬렉션을 통하여 이동하는 GCIterator(8300); 및 특정 순서로 컬렉션을 통한 이동을 포함하는 트래버싱 이터레이션의 C++ 구현을 제공하는 GCTraversingIterator(8400)를 포함한다. GCTraversingIterator(8400)는 GCIterator(8300)에 의존하며 GCIterator(8300)의 명칭과 동일한 명칭으로 메서드를 구현한다.
도 17을 참조하면, 비즈니스 규칙 계층(9000)은 하나의 비즈니스 소프트웨어 컴포넌트(20)의 관계에 다른 비즈니스 소프트웨어 컴포넌트(20)가 추가되는 것이 유효한지를 결정하는 조건 및 테스트인 비즈니스 규칙의 사용을 용이하게 하는데 사용된다. 예를 들면, 비즈니스 규칙은 오일 필드가 관련된 많은 웰을 구비하고 있는 것으로 명령할 수 있으나, 하나의 웰은 하나의 오일 필드와 관련될 수 있다. 비즈니스 규칙은 또한 중요성을 강제하기 위하여 사용된다.
비즈니스 규칙 계층(9000)은 비즈니스 소프트웨어 컴포넌트(20) 관련이 인증되고 강제되는 인터페이스를 제공하는 GPBusinessRule(9100)을 포함한다.
도 18을 참조하면, 인터셉터 계층(12000)은 GPBusinessRules(9100) 소프트웨어 컴포넌트(20) 사이의 메시지 또는 소프트웨어 컴포넌트(20)의 인터페이스를 호출을 인터셉트 및 제어한다. 인터셉트된 메시지 또는 인터페이스 콜은 목적 소프트웨어 컴포넌트(20)로 전송되기 전에 인터셉터 소프트웨어 컴포넌트(20)와 함께 등록된 콜백에 의하여 인증될 수 있으며, 질의될 수 있으며 결정될 수 있다. 이 기술은 소스 또는 목적 소프트웨어 컴포넌트(20)의 변경없이 메시지 및 인터페이스 콜의 배열의 인증 및 제어를 허용한다. 콜백은 메시지 및 인터페이스 콜의 배열을 완전하게 제어할 수 있으며, 의도하는 활동을 방해할 수 있다.
인터셉터 계층(12000)은 사용자가 소프트웨어 컴포넌트(20) 사이의 메시지 또는 소프트웨어 컴포넌트(20) 인터페이스로의 호출을 인터셉트 및 제어하는 것을 허용하는 인터페이스를 포함하는, 메시지를 인터셉트 및 제어하는 GPInterceptor(12100)를 포함한다.
도 19를 참조하면, 어플리케이션 계층(13000)은 바람직한 실시예의 비동기식 동작을 포함하는 본 발명의 시스템의 동작을 이용하는 어플리케이션의 생성 방법을 제공한다. 소프트웨어 컴포넌트(20)는 생성 및 등록될 수 있으며 접속된 컴포넌트에게 서비스할 수 있으며, 따라서 어플리케이션이 이벤트에 대하여 응답하기 전에 의존성 및 통신 링크를 성립시킨다.
어플리케이션 계층(13000)은 사용자가 본 발명의 바람직한 실시예의 비동기식 동작을 사용하는 어플리케이션을 생성하는 것을 허용하는 GPApplication(13100)을 포함한다. GPApplication(13100) 인터페이스가 메서드 또는 프로퍼티를 포함하고 있지는 않으나, IGCEventHandler(1410), IGCMessageQueue(2210), IGCPersist(5110) 및 IGCRouter(2310)를 수집한다.
도 20을 참조하면, 계층(30)은 최종 어플리케이션에는 포함되지 않고 개발을보조하기 위하여 존재하도록 정의되고 구현될 수 있다.
바람직한 실시예에서, 위저드 계층(10000) 소프트웨어 컴포넌트(20)는, 소프트웨어 프로그래밍 분야의 당업자가 용이하게 이해할 수 있는 용어인, 개발자가 소프트웨어 컴포넌트(20)를 생성하는 것을 보조하는 위저드이다. 위저드 계층(10000)은 본 발명의 보조 계층(30) 중의 하나이며 소프트웨어 컴포넌트(20)에 추가적인 동작을 제공하지는 않으나, 표준 소프트웨어 컴포넌트(20)를 신속하게 생성하도록 개발자를 보조한다. 위저드는 프레임워크(40)를 위하여 개발되어 소프트웨어 컴포넌트(20)를 위한 적절한 프레임워크(40) 인터페이스가 구현되는 것을 보장한다. 바람직한 실시예에서, 예를 들면 마이크로소프트사의 표준 비쥬얼 스튜디오 ATL 프로젝트 위저드와 유사한 ATL 프로젝트 위저드와 같은 대부분의 위저드는 마이크로소프트 C++ 개발 환경에 한정되어 있으며, 개발자에게 질문을 제시하고 개발자의 응답에 따라 C++ 클래스 및 메서드의 세트를 생성한다. 그러나, 위저드는 그 액션 또는 출력이 C++로 한정되지 않으며, 예를 들면 ASCII 텍스트 파일, 프로젝트 파일, JAVA와 같은 C++ 이외의 컴퓨터 언어로된 소스 코드 또는 그 조합들을 생성할 수 있다.
도 21을 참조하면, 개발 프로세스의 필수적인 부분인 테스팅 계층(11000)은 소프트웨어 컴포넌트(20)의 허용 테스트를 정의하는 규칙 및 필수 액티비티의 세트를 제공한다. 소프트웨어 컴포넌트(20)의 개발을 위한 요구 조건과 함께, 테스팅 계층(11000) 규칙 및 액티비티는 그러한 동일 요구 조건에 의하여 정의되고 유도된다. 바람직한 실시예에서, 이러한 규칙 및 액티비티를 구현하는 테스트 소프트웨어컴포넌트(20)는 주어진 프레임워크(40)에 대한 소프트웨어 컴포넌트(20)의 개발과 함께 개발되어 완성된 소프트웨어 컴포넌트(20)가 그 프레임워크(40) 내에서 사용된다. 이것은 완성된 소프트웨어 컴포넌트(20)의 전술된 요건에 대한 적합성을 보장한다.
바람직한 실시예에서, ("테스트 하니스"("test harness")로써 생성된) 하나 이상의 테스트 소프트웨어 컴포넌트(20)가 각 프레임워크(40)마다 개발된다. 테스트 하니스는 프레임워크(40)를 위한 모든 필수 인터페이스를 구현하는 것 및 인터페이스가 적절히 동작하는 것을 보장하기 위하여 소프트웨어 컴포넌트(20)를 검사한다. 바람직한 실시예에서, 테스트 하니스 인터페이스는 테스트 스크립트를 실행하고 테스트 결과를 저장하는 기능을 포함하고 있다. 테스트 결과는 패스/페일 정보, 시간/날짜 스탬프 및 개별 테스트의 구체적인 결과, 예를 들면, 소프트웨어 컴포넌트(20)의 CLSID를 포함할 수 있다.
모든 테스트 하니스는 또한 프레임워크(40) 내의 소프트웨어 컴포넌트(20)를 위한 구체적인 테스트 기준 및 실행 방법을 포함하는 인터페이스를 구현하여야 한다. 테스트 기준은 테스트하고자 하는 소프트웨어 컴포넌트(20)를 위해 생성된 요건 및 디자인 문서로부터 얻어지며, 테스트 하니스로 컴파일된다.
본 발명의 계층(30)은 추가 계층(30)을 추가하는 것과 같이 사용자가 원하는 대로 확장될 수 있다. 그 예로써, 사용자는 그래픽 계층(30), 플로팅 계층(30) 및 보안 계층(30) 또는 예를 들면 시스템의 요청을 위하여 요구되는 주어진 기능을 만족하기 위한 다른 계층을 원할 수 있다.
바람직한 실시예의 동작에 있어서, 도 6을 참조하면, 소프트웨어 컴포넌트를 생성하기 위하여 수동적, 발견적, 자동적 또는 그 조합에 의하여 어플리케이션 요건이 결정된다(70). 소정의 N-계층 아키텍쳐 규칙 및 선택적인 위저드를 이용하여, 시스템 디자이너는 어플리케이션 요건을 만족시키는 필수 모델(31) 및 소프트웨어 컴포넌트(20)의 목록을 결정한다(72, 74). 필수 모델(31) 및 소프트웨어 컴포넌트(20)의 목록은 논리적으로 하나 이상의 패키지(42)로 그룹화되며 패키지(42)는 계층(30)과 관련된다(72).
소정의 N-계층 아키텍쳐 규칙 및 선택적인 위저드를 이용하여, 시스템 디자이너는 각 계층(30) 내의 각 소프트웨어 컴포넌트(20)가 소프트웨어 컴포넌트(20)의 목록(700)내에 사용가능한지 결정한다(76). 그 다음에는, 목록(700)의 각 소프트웨어 컴포넌트(20)는 그 소프트웨어 컴포넌트(20)가 요구되는 경우 적절한 계층(30)에 관련된다. N-계층 아키텍쳐 규칙은 요구조건의 본래 의도를 유지하는 동시에 모든 다른 어플리케이션 디자인 규칙과의 일치를 보장하기 위하여 목록(700) 내의 소프트웨어 컴포넌트(20)를 재구성하기 위한 규칙을 더 포함한다. 유사하게, N-계층 아키텍쳐 규칙은 새로운 또는 재구성된 소프트웨어 컴포넌트(20)를 수용할 수 있도록 하나 이상의 계층(30)을 추가하여 아키텍쳐를 확장하는 것에 대한 규칙을 포함할 수 있다.
목록(700)에 포함되지 않은 각 소프트웨어 컴포넌트(20)는 다른 곳에서 위치가 파악되거나 구입되거나 또는 생성되며(80) N-계층 아키텍쳐 규칙에 의하여 정의된 포함 규칙에 따라 목록(700)에 추가된다. 이 규칙들은 각각의 신규 및/또는 재구성된 소프트웨어 컴포넌트(20)가 소프트웨어 목록(700)의 일부가 되는 것이 적합한지를 결정하는 규칙을 포함할 수 있다(82, 84, 86). 예를 들면, 이것은, 너무 구체적이므로 현재의 어플리케이션에서만 사용될 수 있는 소프트웨어 컴포넌트(20)는 목록(700)에 추가되지 않는 것을 허용하는 규칙을 포함할 수 있다.
각 요청에 대하여 하나 이상의 소프트웨어 컴포넌트(20)가 존재한 후에, 계층(30) 사이의 연결을 정의 및 구현하는 규칙을 포함하는 소정의 N-계층 아키텍쳐 규칙을 사용하여 본 발명의 의한 어플리케이션이 생성된다(80).
어플리케이션이 형성된 후에는, 어플리케이션에 사용되는 모든 소프트웨어 컴포넌트(20)는 테스트될 수 있다.
모든 조건이 조건을 만족하는 소프트웨어 컴포넌트(20)를 구비하고, 소프트웨어 컴포넌트(20)가 계층(30)과 관련되면, 계층(30)은 독립적으로 실행가능한 프로그램으로 조합되고 컴파일된다. 소프트웨어 프로그래밍 분야의 당업자에게 이해되는 바와 같이, 조합 및 컴파일은 예를 들면 P-코드 또는 pseudo-코드, 인터프리터, 동적 링크 런타임 라이브러리(dynamically linked runtime library), 저스트-인-타임 런타임 테크닉(just-in-time runtime technique), 모놀리딕 실행파일(monolithic executable) 또는 이들의 조합을 포함하는 대등한 형태로 발생할 수 있다. 이러한 조합 및 컴파일은 새롭고 고유한 어플리케이션을 온-더-플라이(on-the-fly)로 형성하기 위하여 런-타임에 달성될 수 있다.
모든 요구 조건이 만족되면, 즉 소프트웨어 컴포넌트(20)가 목록(700) 또는 다른 곳에서 얻어지고 계층(30)과 관련되면, 시스템 레벨에서의 테스트 및 유효화를 달성하기 위하여 테스팅 계층(30)이 정의되고 구현될 수 있다. 선택적으로, 테스팅 계층(30)은 모든 요구 조건이 식별되는 경우 정의되고 그 다음에 소프트웨어 컴포넌트(20) 조합과 병렬적으로 개발될 수 있다.
본 발명은 컴퓨터에서 구현되는 프로세스 및 이러한 프로세스를 실행하는 장치의 형태로 구현될 수 있다. 본 발명은 플로피 디스켓, CD-ROM, 하드 드라이브, 또는 다른 컴퓨터가 판독가능한 저장 매체와 같은 유형의 매체에 수록된 컴퓨터 프로그램 코드의 형태로 구현될 수 있으며, 컴퓨터 프로그램 코드가 컴퓨터에 로드되어 실행되는 경우 컴퓨터는 본 발명을 실시하는 장치가 된다. 본 발명은 또한 예를 들면 저장 매체에 저장되거나 컴퓨터에 의하여 로드 및/또는 실행되거나, 전송 컴퓨터 데이터 또는 전기적 와이어링 또는 케이블링와 같은 전송 또는 전달 매체 또는 광섬유 또는 전자기 방사를 통하여 다른 신호로서 전송되는 컴퓨터 프로그램 코드의 형태로 구현될 수 있으며, 컴퓨터에 의하여 컴퓨터 프로그램 코드가 로드되어 실행되는 경우 컴퓨터는 본 발명을 실시하는 장치가 된다. 일반 용도의 마이크로프로세서 상에 구현되는 경우, 컴퓨터 프로그램 코드 세그먼트는 마이크로프로세서가 원하는 프로세스를 실행하도록 특정한 논리 회로를 구성한다.
그러므로, 소프트웨어 어플리케이션을 디자인 및/또는 구현하는 시스템은 소프트웨어 컴포넌트(20) 및 계층(30)을 생성하고 어플리케이션을 조합하는 복수개의 수단을 포함할 수 있으며, 이 모든 것은 컴퓨터 분야의 당업자에게 잘 알려진 바와 같이, 예를 들면 키보드, 마우스, 드래그-앤-드롭 인터페이스, 텍스트 편집기, 그래피컬 편집기, OLE 인터페이스 등 또는 이들의 조합을 포함한다. 이 수단들은 전문 시스템에 의하여 구동되거나 구현되는 디자인, 뉴럴 네트워크 등과 같은 수동적인 수단, 발견적인 수단, 자동화된 수단 등 또는 이들의 조합을 더 포함한다.
본 발명의 첨부된 청구범위에 열거된 본 발명의 원리 및 범위 내에서 본질을 설명하기 위하여 상기 개시되고 도시된 부분의 세부사항, 재료 및 배열의 다양한 변경이 가능하다는 것을 이해하여야 한다.

Claims (50)

  1. (a) 하나 이상의 프로세싱 유닛;
    (b) 상기 프로세싱 유닛에 접속된 하나 이상의 메모리 저장부;
    (c) 상기 하나 이상의 프로세싱 유닛 내에서 실행 가능하며, 복수개의 확장가능한 소정의 N-계층 아키텍쳐 규칙을 포함하는 확장가능한 N-계층 생성 소프트웨어; 및
    (d) 상기 메모리 저장부에 상주가능한 하나 이상의 확장가능한 계층;
    을 포함하되, 상기 하나 이상의 확장가능한 계층은
    (i) 상기 확장가능한 계층에 포함되는 것으로 분류되는 소프트웨어 컴포넌트를 위한 기본 디자인 구조를 지정하는 프레임워크-상기 프레임워크는 기초 소프트웨어 컴포넌트와 상기 계층에 포함되는 것으로 분류되는 임의의 소프트웨어 컴포넌트를 위한 표준 인터페이스 세트를 더 포함함-; 및
    (ii) 상기 계층 프레임워크에 부합되는 논리적으로 분류된 소정 개수의 실행가능한 소프트웨어 컴포넌트 세트-각 소프트웨어 컴포넌트는 하나 이상의 다른 소프트웨어 컴포넌트와 통신가능함-;
    를 더 포함하는 것을 특징으로 하는 확장가능한 N-계층 소프트웨어 어플리케이션 생성용 컴퓨팅 시스템.
  2. 제1항에 있어서,
    상기 프로세싱 유닛과 통신하는 통신 네트워크를 더 포함하되, 상기 통신 네트워크는 로컬 내부 네트워크, 로컬 영역 네트워크, 비동기식 네트워크, 동기식 네트워크 및 광역 네트워크에서 선택된 어느 하나인 것을 특징으로 하는 컴퓨팅 시스템.
  3. 제1항에 있어서,
    상기 소프트웨어 컴포넌트 간의 통신은 비동기식 통신을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  4. 제1항에 있어서,
    소프트웨어 컴포넌트의 목록을 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  5. 제1항에 있어서,
    상기 적어도 하나 이상의 확장가능한 계층은 확장가능한 계층의 세트이며, 상기 확장가능한 계층의 첫 번째 계층과 상기 확장가능한 계층의 세트 중 하나 이상의 다른 계층간의 시퀀싱 및 메시징 정보를 포함하는 논리 접속 세트를 더 포함하되, 상기 확장가능한 계층의 세트 내의 각각의 계층은 하나 이상의 계층 인터페이스를 통하여 다른 계층들과 통신할 수 있는 것을 특징으로 하는 컴퓨팅 시스템.
  6. 제5항에 있어서,
    상기 확장가능한 계층의 세트는 기초 계층 프레임워크를 포함하는 기초 계층을 포함하며, 상기 기초 계층 프레임워크는
    (a) 통상적으로는 다른 소프트웨어 컴포넌트에 결합된 소프트웨어 컴포넌트를 포함하는 소프트웨어 컴포넌트를 수집하는 하나 이상의 컬렉션 인터페이스;
    (b) 소프트웨어 컴포넌트를 정보 소스 또는 정보 싱크로써 접속하기 위한 하나 이상의 접속 인터페이스;
    (c) 메시지에 기초한 동작을 포함하는 하나 이상의 메시징 인터페이스; 및
    (d) 장치를 제어하기 위한 하나 이상의 제어 인터페이스
    를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  7. 제5항에 있어서,
    상기 확장가능한 계층의 세트는 비즈니스 규칙 계층, 처리 계층, 데이터 계층, 메시징 계층, 비즈니스 객체 계층, 시각 계층, 기초 계층, 실시간 장치 계층, 인터셉터 계층 및 어플리케이션 계층을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  8. 제7항에 있어서,
    상기 처리 계층은
    (a) 상기 처리 계층과 관련된 프로세싱 컴포넌트를 제어할 수 있는 인터페이스;
    (b) 소정 개수의 소프트웨어 컴포넌트 속성을 결합할 수 있는 결합 인터페이스;
    (c) 질의 변경 인터페이스를 포함하는 질의 인터페이스; 및
    (d) 처리 계층 요건을 만족시키기 위한 소정 개수의 윈도우형 입/출력 파라미터;
    를 포함하는 프레임워크를 더 포함하되,
    (e) 처리 계층 소프트웨어 컴포넌트는 처리 플로우를 관리하며 모델을 통한 데이터 플로우를 모니터링 및/또는 최적화하는 것을 특징으로 하는 컴퓨팅 시스템.
  9. 제8항에 있어서,
    프로세스 모델 필터 요건을 추적하는 추적 인터페이스를 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  10. 제9항에 있어서,
    상기 처리 컴포넌트는 필터, 동기화 컴포넌트, 소스, 싱크 및 그래피컬 컴포넌트를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  11. 제7항에 있어서,
    상기 데이터 계층은 데이터 계층 프레임워크를 포함하며, 소정의 소프트웨어컴포넌트 세트를 위한 데이터 퍼시스턴스 서비스 및 데이터로의 액세스를 제공하되, 상기 데이터 계층 프레임워크는
    (a) 데이터 소스에 데이터를 기록하거나 데이터 소스로부터 데이터를 판독하는 데이터 변경 인터페이스; 및
    (b) 특정한 종류의 데이터로의 액세스가 제공되는 데이터 액세스 인터페이스
    를 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  12. 제7항에 있어서,
    상기 메시징 계층은 메시지 소스로부터 메시지 수신자로 정보를 전달하기 위한 메시징 계층 프레임워크 및 메시징 소프트웨어 컴포넌트를 더 포함하되, 상기 메시징 계층 프레임워크는
    (a) 메시지 생성 인터페이스;
    (b) 메시지 큐잉 인터페이스;
    (c) 메시지 라우팅 인터페이스;
    (d) 메시지 텍스트 관리 인터페이스;
    (e) 메시지를 수신하는 하나 이상의 소프트웨어 컴포넌트를 지정하는 메시지 라우팅 인터페이스; 및
    (f) 특정한 대기 행렬에 대한 정보가 지정될 수 있는 메시지 대기 인터페이스;
    를 포함하며,
    (g) 상기 메시징 소프트웨어 컴포넌트는 메시지 대기 및 통지를 제어하며, 다른 종류의 메시지를 위한 메시지 생성을 지원하는 것을 특징으로 하는 컴퓨팅 시스템.
  13. 제12항에 있어서,
    상기 메시징 계층 인터페이스는 비동기식 메시징을 지원하는 것을 특징으로 하는 컴퓨팅 시스템.
  14. 제7항에 있어서,
    상기 비즈니스 컴포넌트 계층은
    (a) 정보 저장부 및 정보로의 액세스를 제공하는 범용 데이터 컨테이너를 포함하는 하나 이상의 비즈니스 소프트웨어 컴포넌트-상기 비즈니스 소프트웨어 컴포넌트는 비즈니스 엔티티를 위한 데이터 및 동작을 포함하는 속성을 더 포함함-; 및
    (b)(i) 실제의 비즈니스 엔티티를 반영하는 관련 비즈니스 소프트웨어 컴포넌트의 집함을 포함하는 모델; 및
    (ii) 상기 비즈니스 소프트웨어 컴포넌트 내에 대용량 데이터를 저장하기 위하여 이진 대형 오브젝트
    를 포함하는 비즈니스 소프트웨어 컴포넌트
    를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  15. 제14항에 있어서,
    하나 이상의 비즈니스 소프트웨어 컴포넌트는 다른 비즈니스 소프트웨어 컴포넌트인 속성을 구비하는 것을 특징으로 하는 컴퓨팅 시스템.
  16. 제14항에 있어서
    상기 하나 이상의 비즈니스 소프트웨어 컴포넌트는 정적 모델을 정의하는 구성이되, 상기 비즈니스 소프트웨어 컴포넌트와 속성 컴포넌트 사이의 관계는 비즈니스 규칙에 의해서 강제되지 않는 관계인 것을 특징으로 하는 컴퓨팅 시스템.
  17. 제14항에 있어서
    상기 모델은 비즈니스 소프트웨어 컴포넌트 모델 인터페이스의 세트를 더 포함하여 특정한 기능을 달성하기 위하여 상기 비즈니스 소프트웨어 컴포넌트가 결합되는 것을 특징으로 하는 컴퓨팅 시스템.
  18. 제17항에 있어서,
    상기 비즈니스 소프트웨어 컴포넌트는 모델 인터페이스는
    (a) 상기 비즈니스 소프트웨어 컴포넌트가 다른 소프트웨어 컴포넌트와 관련될 수 있도록 하는 관련 인터페이스;
    (b) 다른 소프트웨어 컴포넌트와의 계층적인 관계를 확립하며 유지시키는 관계 인터페이스;
    (c) 소프트웨어 컴포넌트의 내용을 선택적으로 검색할 수 있는 데이터 덤프 인터페이스; 및
    (d) 퍼시스턴트할 수 있는 속성 명칭을 검색할 수 있는 명칭 인터페이스
    를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  19. 제7항에 있어서,
    정보의 표시 및 사용자와의 상호작용을 표시를 제공하는 시각 계층을 더 포함하며, 상기 시각 계층은
    (a) 데이터 및 사용자 상호 작용을 처리하는 연산 로직을 포함하는 모델러-상기 모델러는 이벤트 핸들러, 접속 소스 및 접속 싱크를 더 포함함-;
    (b) 데이터 및 적어도 모델의 일부를 지각적으로 요청자에게 표시하는 연산 로직을 포함하는 뷰어-상기 뷰어 컴포넌트는 이벤트 핸들러 및 접속 소스를 더 퍼함함-; 및
    (c) 데이터 및 요청자 상호 작용을 처리하는 연산 로직을 포함하는 컨트롤러-상기 요청자 상호 작용은 입력 장치로부터의 액션을 더 포함하며 상기 컨트롤러 컴포넌트는 이벤트 핸들러, 접속 소스 밑 접속 싱크를 더 포함함-;
    을 포함하는 모델, 뷰, 컨트롤러 디자인 패턴을 이용하되,
    (d) 상기 모델러, 뷰어 및 컨트롤러는 메시징 계층을 이용하며, 상기 각각의 모델러, 뷰어 및 컨트롤러-상기 모델러 및 컨트롤러는 다른 동작을 달성하기 위하여 첨부된 다른 메시지 핸들러를 구비함-는 추가적인 동작을 제공하기 위하여 구비된 메시지 핸들러를 구비하는 것을 특징으로 하는 컴퓨팅 시스템.
  20. 제19항에 있어서,
    상기 시각 계층은
    (a) 상기 뷰어가 상기 시스템으로의 리드-온리 액세스를 허용하도록 지정될 수 있는 리드-온리 모드; 및
    (b) 모델을 뷰하며 편집할 수 있는 편집 모드;
    를 더 포함하되,
    (c) N-계층 어플리케이션은 선택적으로 리드-온리 모드, 편집 모드 또는 둘 모두를 사용자에 근거하여 선택적으로 포함할 수 있는 것을 특징으로 하는 컴퓨터 시스템.
  21. 제7항에 있어서,
    상기 실시간 장치 계층은
    (a) 통신인터페이스; 및
    (b) 이벤트-핸들링 인터페이스;
    를 더 포함하되,
    (c) 실시간 장치는 접속된 소프트웨어 컴포넌트와 통신하여 실시간 장치용 이벤트 핸들링과의 통신을 지원하는 것을 특징으로 하는 컴퓨터 시스템.
  22. 하나 이상의 프로세싱 유닛; 상기 프로세싱 유닛에 접속된 하나 이상의 메모리 저장부; 상기 하나 이상의 프로세싱 유닛 내에서 실행 가능하며, 소정의 소프트웨어 컴포넌트 규칙, 계층 규칙 및 어플리케이션 어셈블리 규칙을 포함하는 N-계층 구조 규칙-상기 N-계층 소프트웨어는 상기 하나 이상의 프로세싱 유닛내에서 실행가능하며, 각 소프트웨어 컴포넌트(20)는 소정의 구조와 외부 인터페이스를 더 포함하며, 하나 이상의 소프트웨어 컴포넌트(20)와 통신 가능함-을 포함하는 확장가능한 N-계층 생성 소프트웨어; 및 상기 메모리 저장부에 상주하는 기능을 구비한 초기 확장가능한 계층의 소정 세트-확장가능한 계층의 소정 세트의 각 계층은 소정의 구조를 가지며, 확장가능한 계층의 세트는 논리적으로 분류된 소정 개수의 실행가능한 소프트웨어 컴포넌트의 세트를 더 포함함-을 포함하는 확장 가능한 N-계층 소프트웨어 어플리케이션 생성용 컴퓨팅 시스템에서 소프트웨어 어플리케이션을 생성하는 방법에 있어서,
    (a) 어플리케이션 요구 조건을 결정하는 단계;
    (b) 어플리케이션 요구 조건 세트의 각각에 대하여 하나 이상의 상기 어플리케이션 요구 조건과 매치되는 소프트웨어 컴포넌트를 위한 소프트웨어 컴포넌트의 목록을 검사하는 단계;
    (c) 소프트웨어 컴포넌트 목록에 소프트웨어 컴포넌트 매치가 존재하지 않는 어플리케이션 요구 조건 세트의 어플리케이션 요구 조건 각각에 대하여 어플리케이션 요구 조건에 매치되는 소프트웨어 컴포넌트를 얻는 단계;
    (d) 어플리케이션 요구 조건을 논리적으로 모델링하기 위하여 계층의 게트를정의하는 단계;
    (e) 상기 정의된 계층의 세트를 만족시키기 위하여 소정의 계층의 세트로부터 계층을 선택하는 단계;
    (f) 상기 정의된 계층의 세트를 만족시키는 소정의 계층의 세트내에 존재하지 않는 계층의 경우, 신규 계층을 생성하는 단계;
    (g) 계층과 관련된 프레임워크에 따라 매칭되는 소프트웨어 컴포넌트를 상기 정의된 계층의 세트의 하나 이상의 계층과 관련시키는 단계; 및
    (h) 상기 어플리케이션 조립 규칙에 따라 상기 소정의 계층의 세트를 조립함에 의하여 소프트웨어 어플리케이션을 생성하는 단계를 포함하되,
    (i) 상기 소프트웨어 어플리케이션은 상기 어플리케이션 요구 조건의 세트를 만족시키는 것을 특징으로 하는 소프트웨어 어플리케이션을 생성 방법.
  23. 제22항에 있어서,
    상기 어플리케이션 요구 조건에 매칭되는 소프트웨어 컴포넌트를 얻는 단계는 기존의 소프트웨어 컴포넌트를 선택적으로 변경하는 단계 또는 계층의 프레임워크 요구조건에 부합하도록 소프트웨어 컴포넌트의 독립적인 소스로부터 새로운 소프트웨어 컴포넌트를 획득하여 선택적으로 변경하는 단계를 더 포함하는 것을 특징으로 하는 소프트웨어 어플리케이션을 생성 방법.
  24. 제22항에 있어서,
    (a) 상기 획득한 소프트웨어 컴포넌트를 상기 소프트웨어 컴포넌트 목록에 포함하기 위하여 소정의 포함 기준에 따라 검사하는 단계; 및
    (b) 상기 포함 기준을 만족하는 경우 상기 획득한 소프트웨어 컴포넌트를 상기 소프트웨어 컴포넌트 목록에 저장하는 단계
    를 더 포함하는 것을 특징으로 하는 소프트웨어 어플리케이션을 생성 방법.
  25. 제22항에 있어서,
    상기 하나 이상의 소프트웨어 컴포넌트는 비즈니스 소프트웨어 컴포넌트이며, 관련 비즈니스 소프트웨어 컴포넌트가 퍼시스턴트 저장부로부터 검색되는 경우 관련된 비즈니스 소프트웨어 컴포넌트와 함께 복합 소프트웨어 컴포넌트을 자동적으로 검색하는 단계를 더 포함하는 것을 특징으로 하는 소프트웨어 어플리케이션을 생성 방법.
  26. 제22항에 있어서,
    새로운 비즈니스 소프트웨어 컴포넌트가 생성되는 경우 복합 컴포넌트는 생성되지 않으며, 복합 컴포넌트를 생성하고 구성 컴포넌트에 포함시키는 것은 생성자의 책임인 것을 특징으로 하는 소프트웨어 어플리케이션을 생성 방법.
  27. 제22항에 있어서,
    소프트웨어 컴포넌트 및 계층은 실행시에 조합되어 신규하고 고유한 어플리케이션을 온-더-플라이로 형성하는 것을 특징으로 하는 소프트웨어 어플리케이션을 생성 방법.
  28. 제22항에 있어서,
    (a) 테스팅 계층을 정의하는 단계;
    (b) 상기 테스팅 모델을 이용하여 최종 모델을 테스팅하는 단계; 및
    (c) 상기 최종 모델 내의 실행가능한 소프트웨어 컴포넌트 내의 오류를 정정하는 단계를 더 포함하는 것을 특징으로 하는 소프트웨어 어플리케이션을 생성 방법.
  29. 제22항에 있어서,
    관련은 그래피컬 사용자 인터페이스를 사용하여 달성되는 것을 특징으로 하는 소프트웨어 어플리케이션을 생성 방법.
  30. 제22항에 있어서,
    상기 새로운 계층을 형성하는 단계는
    (a) 요구 조건을 검사하는 단계;
    (b) 현재 프레임워크가 상기 요구 조건을 수용하는데 적합한지 결정하는 단계;
    (c) 상기 요구 조건을 수용하는데 적합한 경우 현재 프레임워크를 사용하는단계;
    (d) 현재 프레임워크가 적합하지 않거나 상기 요구 조건을 수용하지 못하는 경우 새로운 프레임워크를 정의하는 단계; 및
    (e) 상기 새로운 프레임워크를 이용하여 새로운 계층을 형성하는 단계
    를 더 포함하는 것을 특징으로 하는 소프트웨어 어플리케이션을 생성 방법.
  31. 제22항에 있어서,
    계층을 제거하는 단계를 더 포함하되, 상기 계층을 제거하는 단계는
    (a) 현재의 요구 조건을 검사하는 단계;
    (b) 각각의 현재의 계층에 대하여 적어도 하나의 다른 계층이 상기 요구 조건을 만족하는지 결정하는 단계;
    (c) 상기 요구 조건을 만족하는 경우 상기 계층을 조합하는 단계;
    (d) 각각의 잔존 계층에 대하여 상기 계층이 적어도 하나의 요구 조건을 만족시키는데 더 이상 필요하지 않은지를 판단하는 단계; 및
    (e) 더 이상 필요하지 않은 경우 더 이상 필요없는 계층을 제거하는 단계
    를 포함하는 것을 특징으로 하는 소프트웨어 어플리케이션을 생성 방법.
  32. 제22항에 있어서,
    초기 계층의 세트를 정의하는 것을 특징으로 하는 소프트웨어 어플리케이션을 생성 방법.
  33. 제32항에 있어서,
    상기 초기 계층의 세트는 비즈니스 규칙 계층, 처리 계층, 데이터 계층, 메시징 계층, 플로팅 계층, 비즈니스 객체 계층, 시각 계층, 기초 계층, 실시간 장치 계층, 인터셉터 계층 및 어플리케이션 계층을 포함하는 것을 특징으로 하는 소프트웨어 어플리케이션을 생성 방법.
  34. 제33항에 있어서,
    상기 비즈니스 규칙 계층 프레임워크를 정의하는 단계는
    (a) 비즈니스 규칙의 세트를 정의하는 단계;
    (b) 제1 소프트웨어 컴포넌트가 제2 소프트웨어 컴포넌트와 관련됨에 의하여 상기 비즈니스 규칙을 위반하는지를 결정하는데 사용될 수 있는 소정의 프로퍼티 및 메서드의 세트를 정의하는 단계;
    (c) 관련된 자(子) 소프트웨어 컴포넌트 각각의 종류를 결정하는데 사용될 수 있는 소정의 프로퍼티 및 메서드의 세트를 정의하는 단계;
    (d) 관련된 모(母) 소프트웨어 컴포넌트 각각의 종류를 결정하는데 사용될 수 있는 소정의 프로퍼티 및 메서드의 세트를 정의하는 단계; 및
    (e) 특정 종류의 제1 소프트웨어 컴포넌트가 특정 종류의 제2 소프트웨어 컴포넌트와 관련됨에 의하여 상기 비즈니스 규칙을 위반하는지를 결정하는데 사용될 수 있는 소정의 프로퍼티 및 메서드의 세트를 정의하는 단계;
    를 더 포함하는 것을 특징으로 하는 소프트웨어 어플리케이션을 생성 방법.
  35. 제33항에 있어서,
    범용의 재사용 가능한 데이터 컨테이너로써 비즈니스 소프트웨어 컴포넌트를 생성하는 것을 허용하되, 비즈니스 소프트웨어 컴포넌트 내의 데이터 및 동작은 다른 소프트웨어 컴포넌트로부터 숨겨지며, 다른 컴포넌트가 상기 비즈니스의 내부 구조 및 구현 세부사항을 알지 못하도록 하며, 데이터 무결성 체크가 비즈니스 소프트웨어 컴포넌트 레벨에서 수행되도록 허용하는 단계를 더 포함하는 것을 특징으로 하는 소프트웨어 어플리케이션을 생성 방법.
  36. 제35항에 있어서,
    실제 세계의 비즈니스 엔티티에 해당하는 혼성 수집 모델로 비즈니스 소프트웨어 컴포넌트를 수집하는 단계를 더 포함하는 것을 특징으로 하는 소프트웨어 어플리케이션 생성 방법.
  37. 제35항에 있어서,
    상기 비즈니스 소프트웨어 컴포넌트를 수집하는 단계는 다른 비즈니스 소프트웨어 컴포넌트를 수집하기 위하여 일반화된 수집 인터페이스를 사용하는 것을 특징으로 하는 소프트웨어 어플리케이션 생성 방법.
  38. 제33항에 있어서,
    적어도 하나 이상의 실시간 장치와 통신 및 이벤트 핸들링을 지원하기 위한 실시간 장치 계층에 대한 프레임워크를 명시하는 단계를 더 포함하되, 상기 프레임워크는 실시간 장치가 접속된 소프트웨어 컴포넌트와 통신할 수 있도록 하는 소정의 통신 인터페이스 및 소정의 이벤트-핸들링 인터페이스를 포함하는 것을 특징으로 하는 소프트웨어 어플리케이션 생성 방법.
  39. 제33항에 있어서,
    상기 인터셉터 계층은 소프트웨어 컴포넌트 사이에서 전달되는 메시지 또는 소프트웨어 컴포넌트의 인터페이스로의 호출의 인터셉션 및 제어를 허용하기 위한 속성 및 메서드를 포함하되, 인터셉트된 메시지 또는 인터페이스 호출은 인터셉트된 메시지 또는 인터페이스 호출이 목적 소프트웨어 컴포넌트로 전송되기 전에 인터셉터 계층과 함께 등록된 콜백에 의하여 인증, 질의 및 작동되어, 메시지 또는 소프트웨어 컴포넌트의 인터페이스로의 호출의 배열의 인증 및 제어가 소스 또는 목적 소프트웨어 컴포넌트의 변경없이 발생하는 것을 허용하는 특징으로 하는 소프트웨어 어플리케이션 생성 방법.
  40. 제39항에 있어서,
    (a) 상기 인터셉터에 콜백을 등록하는 방법을 명시하는 단계;
    (b) 콜백의 등록의 취소 방법을 명시하는 단계; 및
    (c) 소프트웨어 컴포넌트의 인스턴스를 생성하는 방법을 명시하는 단계
    를 더 포함하는 것을 특징으로 하는 소프트웨어 어플리케이션 생성 방법.
  41. 제33항에 있어서,
    (a) 비동기식 동작을 사용하는 어플리케이션을 생성하기 위한 어플리케이션 계층 내의 메서드를 명시하는 단계;
    (b) 소프트웨어 컴포넌트가 어떻게 생성되고 등록되는지를 명시하는 단계; 및
    (c) 서비스 컴포넌트들이 어떻게 접속되는지 명시하는 단계
    를 더 포함하되,
    (d) 의존성 및 통신 링크는 어플리케이션이 이벤트에 관하여 응답을 시작하기 전에 성립되는 것
    을 특징으로 하는 소프트웨어 어플리케이션 생성 방법.
  42. 제33항에 있어서,
    계층과 관련된 소프트웨어 컴포넌트에 대하여 적절한 프레임워크 인터페이스가 구현되는 것을 보장하기 위하여 하나 이상의 프레임워크용 위저드를 포함하는 위저드 계층을 명시하는 단계를 더 포함하되, 상기 위저드 계층은 개발 프로세스에서 사용될 수 있는 것을 특징으로 하는 소프트웨어 어플리케이션 생성 방법.
  43. 제33항에 있어서,
    (a) 상기 테스팅 계층에 대한 규칙 및 필수 액티비티의 세트를 명시하는 단계; 및
    (b) 상기 규칙 및 필수 액티비티를 이용하여 소프트웨어 컴포넌트의 허용가능한 테스트를 정의하는 단계
    를 더 포함하되,
    (c) 상기 규칙 및 필수 액티비티는 테스트 스크립트를 실행하고 테스트 결과를 저장하기 위한 하나 이상의 테스트 하니스를 포함하며, 상기 테스트 하니스는 상기 소프트웨어 컴포넌트가 그 프레임워크를 위한 모든 필수 인터페이스를 구현하고 상기 인터페이스가 적절히 동작하는 것을 보장하기 위하여 프레임워크와 관련된 소프트웨어 컴포넌트를 검사하는 것을 특징으로 하는 소프트웨어 어플리케이션 생성 방법.
  44. 제43항에 있어서,
    상기 규칙 및 필수 액티비티는 소프트웨어 컴포넌트를 개발에 대한 요건에 의하여 정의되고 얻어지는 것을 특징으로 하는 소프트웨어 어플리케이션 생성 방법.
  45. 제33항에 있어서,
    템플릿 계층을 제공하는 단계를 더 포함하되, 상기 템플릿 계층은
    상기 템플릿 계층 내에 소프트웨어 컴포넌트를 위한 퍼시스턴스, 컬렉션 및 이터레이터의 소정의 소프트웨어 언어 구현을 포함하는 템플릿을 포함하며, 소정의 기능의 구현을 용이하게 하고 컴포넌트의 기능을 확장하는데 필요한 유지보수의 노력을 감소시키기 위하여 상기 템플릿은 컴포넌트 구현에 사용되는 것을 특징으로 하는 소프트웨어 어플리케이션 생성 방법.
  46. 소프트웨어 컴포넌트를 포함하며, 상기 소프트웨어 컴포넌트는
    (a) 어플리케이션의 시스템 요구 조건을 결정하는 단계;
    (b) 상기 시스템 요구 조건을 이용하여, 모델 디자인을 생성하기 위하여 초기 계층의 세트로부터 하나 이상의 계층-상기 각 계층은 상기 모든 계층이 어플리케이션의 시스템 요구 조건을 공통적으로 만족할 때까지 어플리케이션 프로그램적 책임의 별개의 세트를 제공하는 의무가 있음-을 형성하는 단계;
    (c) 각 계층에 대하여,
    (i) 기초 컴포넌트를 포함한 계층의 기초 디자인 구조를 지정하는 단계를 포함하는, 상기 계층과 관련된 소프트웨어 컴포넌트에 대한 설계적 컨텍스트를 형성하는 단계;
    (ii) 상기 계층을 구현하기 위하여 실행가능한 소프트웨어 컴포넌트의 논리적 분류를 그 계층과 관련되도록 정의하는 단계; 및
    (iii) 그 계층에 포함되는 것으로 분류된 임의의 소프트웨어 컴포넌트에 대한 표준 인터페이스의 세트를 지정하는 단계
    를 포함하는 프레임워크 형성 단계;
    (d) 각 프레임워크에 대하여,
    (i) 소프트웨어 컴포넌트 구성요소의 목록에 각 필수 소프트웨어 컴포넌트 존재하는지 검사하는 단계;
    (ii) 상기 프레임워크를 만족하는 목록 내에 또한 존재하는 각 프레임워크 내의 계층 소프트웨어 컴포넌트 내에서 사용하기 위하여 선택하는 단계; 및
    (iii) 목록에 존재하지 않는 필수 소프트웨어 컴포넌트에 대하여, 상기 요구 조건을 만족하기 위하여 소프트웨어 컴포넌트를 획득하는 단계;
    (e) 각 계층에 대하여,
    (i) 상기 계층과 관련된 모든 소프트웨어 컴포넌트 구성요소를 그 계층으로 조립하는 단계; 및
    (ii) 그 계층이 시퀀싱되거나 데이터를 교환하는데 필요한 그 계층과 각각의 다른 계층 사이의 시퀀싱 및 데이터 관계를 정의하는 단계;
    (f) 상기 어플리케이션의 시스템 요구 조건을 공통적으로 만족하는 모든 계층을 호출가능한 어플리케이션으로 패키징하는 단계
    를 포함하는 것을 특징으로 하는 소프트웨어 컴포넌트를 포함하는 어플리케이션 생성하는 방법.
  47. 제46항에 있어서,
    (a) 테스팅 계층을 정의하는 단계;
    (b) 상기 테스팅 계층을 이용하여 호출가능한 어플리케이션을 테스트하는 단계; 및
    (c) 상기 호출가능한 어플리케이션 내의 오류를 수정하는 단계
    를 더 포함하는 것을 특징으로 하는 소프트웨어 어플리케이션 생성 방법.
  48. 제46항에 있어서,
    그 계층이 시퀀싱되거나 데이터를 교환하는데 필요한 그 계층과 각각의 다른 계층 사이의 시퀀싱 및 데이터 관계를 정의하는 단계는 그래피컬 사용자 인터페이스를 통하여 달성되는 것을 특징으로 하는 소프트웨어 어플리케이션 생성 방법.
  49. 컴퓨터로 판독가능한 매체내에 구현된 제22항의 방법을 이용하여 생성된 컴퓨터 프로그램.
  50. 컴퓨터로 판독가능한 매체내에 구현된 제46항의 방법을 이용하여 생성된 컴퓨터 프로그램.
KR1020027008438A 1999-12-29 2000-12-28 새로운 컴포넌트를 생성 또는 구입하며 이들을 목록에추가할 수 있는 기능을 구비한 객체 지향 소프트웨어 개발툴 KR20020097147A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US17391499P 1999-12-29 1999-12-29
US60/173,914 1999-12-29
US09/746,157 US20020104067A1 (en) 1999-12-29 2000-12-22 Method and system and article of manufacture for an N-tier software component architecture application
US09/746,157 2000-12-22
PCT/US2000/035466 WO2001048603A1 (en) 1999-12-29 2000-12-28 Object oriented software development tool with the ability to create or purchase new components and add them to an inventory (catalog)

Publications (1)

Publication Number Publication Date
KR20020097147A true KR20020097147A (ko) 2002-12-31

Family

ID=26869681

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027008438A KR20020097147A (ko) 1999-12-29 2000-12-28 새로운 컴포넌트를 생성 또는 구입하며 이들을 목록에추가할 수 있는 기능을 구비한 객체 지향 소프트웨어 개발툴

Country Status (8)

Country Link
US (1) US20020104067A1 (ko)
EP (1) EP1242878A1 (ko)
JP (1) JP2003518691A (ko)
KR (1) KR20020097147A (ko)
AU (1) AU777835B2 (ko)
CA (1) CA2393665A1 (ko)
GB (1) GB2374176A (ko)
WO (1) WO2001048603A1 (ko)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100818924B1 (ko) * 2006-05-03 2008-04-04 삼성전자주식회사 소프트웨어 모듈의 조합을 통해 dsp 코드를 생성하는장치 및 그 방법
US7640509B2 (en) 2005-06-09 2009-12-29 Nec Electronics Corporation Program creation apparatus, program creation method and program
KR101019228B1 (ko) * 2007-10-22 2011-03-04 한국산업기술평가관리원 분산 컴퓨팅 기반 구조를 통해 센서 및 액튜에이터 애플리케이션을 개발, 배치하기 위한 시스템 및 방법
WO2013002546A2 (ko) * 2011-06-29 2013-01-03 (주)인성정보 유무선 통신망을 이용한 질병 관리 시스템 및 방법
KR101507312B1 (ko) * 2010-06-15 2015-03-31 에스케이플래닛 주식회사 Ui 컴포넌트 구현 시스템, 단말 장치 및 상기 단말 장치의 ui 컴포넌트 구현방법
KR102130002B1 (ko) * 2020-04-24 2020-07-03 한화시스템 주식회사 소프트웨어 컴포넌트 표준을 이용한 차세대 함정 전투 체계 개발 플랫폼
US10761816B2 (en) 2007-10-01 2020-09-01 Samsung Electronics Co., Ltd. Method and system for determining interface compatibility based on component model

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020129345A1 (en) * 2000-09-27 2002-09-12 Tilden Mark D. Scripting business logic in a distributed object oriented environment
US7882008B2 (en) * 2001-04-02 2011-02-01 Goldman Sachs & Co. Apparatus, methods and articles of manufacture for computerized transaction execution and processing
US7316000B2 (en) * 2001-08-27 2008-01-01 International Business Machines Corporation Interactive agent for a topological multi-tier business application composer
US7363612B2 (en) * 2002-03-06 2008-04-22 Sun Microsystems, Inc. Application programs with dynamic components
US7599912B2 (en) * 2003-01-14 2009-10-06 At&T Intellectual Property I, L.P. Structured query language (SQL) query via common object request broker architecture (CORBA) interface
US20050273758A1 (en) * 2003-03-05 2005-12-08 Long Michael V System and method for building a component base architecture
US20100145752A1 (en) 2004-05-11 2010-06-10 Davis James E Adaptable workflow and communications system
US8219968B2 (en) * 2003-07-17 2012-07-10 Raytheon Company Designing computer programs
US20050097574A1 (en) * 2003-10-30 2005-05-05 Microsoft Corporation Modular, robust, component user interface framework
US7774751B2 (en) * 2003-12-26 2010-08-10 Yefim Zhuk Knowledge-driven architecture
US20050246304A1 (en) * 2004-04-30 2005-11-03 Microsoft Corporation End-user application customization using rules
US7739656B2 (en) * 2004-12-15 2010-06-15 International Business Machines Corporation Generating asynchronous interfaces and methods from synchronous interfaces and methods
US7779430B2 (en) * 2004-12-15 2010-08-17 International Business Machines Corporation Method, system, and article of manufacture for providing service components
US20060129560A1 (en) * 2004-12-15 2006-06-15 Adams Greg D Architecture for enabling business components to access middleware application programming interfaces (APIs) in a runtime environment
US8489407B2 (en) 2005-01-04 2013-07-16 International Business Machines Corporation Method of evaluating business components in an enterprise
US8006224B2 (en) * 2005-04-15 2011-08-23 Research In Motion Limited System and method for unified visualization of two-tiered applications
US20070055932A1 (en) * 2005-09-02 2007-03-08 Microsoft Corporation Application programming interfaces for graphical user interfaces
US7698685B2 (en) * 2005-10-12 2010-04-13 Microsoft Corporation Discovery, qualification, and activation of software add-in components
US8060865B2 (en) * 2006-01-12 2011-11-15 Microsoft Corporation Build-time enforcement of architectural partitioning in computer application
US8381180B2 (en) * 2006-09-08 2013-02-19 Sap Ag Visually exposing data services to analysts
US9274921B2 (en) * 2006-12-27 2016-03-01 International Business Machines Corporation System and method for managing code displacement
US8566777B2 (en) * 2007-04-13 2013-10-22 International Business Machines Corporation Work packet forecasting in a software factory
US8359566B2 (en) * 2007-04-13 2013-01-22 International Business Machines Corporation Software factory
US20080256390A1 (en) * 2007-04-13 2008-10-16 Chaar Jarir K Project Induction in a Software Factory
US8464205B2 (en) * 2007-04-13 2013-06-11 International Business Machines Corporation Life cycle of a work packet in a software factory
WO2008134627A2 (en) 2007-04-27 2008-11-06 Boomi, Inc. System and method for automated on-demand creation of a customized software application
KR100911324B1 (ko) 2007-06-22 2009-08-07 삼성전자주식회사 가변성 요소 관리 방법 및 그 장치
US9189757B2 (en) * 2007-08-23 2015-11-17 International Business Machines Corporation Monitoring and maintaining balance of factory quality attributes within a software factory environment
US20090100406A1 (en) * 2007-10-16 2009-04-16 Microsoft Corporation Software factory specification and execution model
US8751626B2 (en) * 2007-10-23 2014-06-10 Microsoft Corporation Model-based composite application platform
US20090165021A1 (en) * 2007-10-23 2009-06-25 Microsoft Corporation Model-Based Composite Application Platform
US9218166B2 (en) * 2008-02-20 2015-12-22 Embarcadero Technologies, Inc. Development system with improved methodology for creation and reuse of software assets
JP4613214B2 (ja) * 2008-02-26 2011-01-12 日立オートモティブシステムズ株式会社 ソフトウェア自動構成装置
US8667469B2 (en) * 2008-05-29 2014-03-04 International Business Machines Corporation Staged automated validation of work packets inputs and deliverables in a software factory
US8595044B2 (en) * 2008-05-29 2013-11-26 International Business Machines Corporation Determining competence levels of teams working within a software
US8527329B2 (en) * 2008-07-15 2013-09-03 International Business Machines Corporation Configuring design centers, assembly lines and job shops of a global delivery network into “on demand” factories
US8452629B2 (en) 2008-07-15 2013-05-28 International Business Machines Corporation Work packet enabled active project schedule maintenance
US8140367B2 (en) 2008-07-22 2012-03-20 International Business Machines Corporation Open marketplace for distributed service arbitrage with integrated risk management
US20100023920A1 (en) * 2008-07-22 2010-01-28 International Business Machines Corporation Intelligent job artifact set analyzer, optimizer and re-constructor
US8375370B2 (en) * 2008-07-23 2013-02-12 International Business Machines Corporation Application/service event root cause traceability causal and impact analyzer
US8418126B2 (en) * 2008-07-23 2013-04-09 International Business Machines Corporation Software factory semantic reconciliation of data models for work packets
US8271949B2 (en) 2008-07-31 2012-09-18 International Business Machines Corporation Self-healing factory processes in a software factory
US8336026B2 (en) 2008-07-31 2012-12-18 International Business Machines Corporation Supporting a work packet request with a specifically tailored IDE
US8448129B2 (en) * 2008-07-31 2013-05-21 International Business Machines Corporation Work packet delegation in a software factory
KR100887105B1 (ko) 2008-09-09 2009-03-04 김진만 Windows CE가 탑재된 산업용 임베디드 컨트롤러에서 주변장치의 제어를 위한 닷넷 컴포넌트의 구현 방법
US8826238B2 (en) * 2009-01-22 2014-09-02 Microsoft Corporation Per group verification
US8904366B2 (en) * 2009-05-15 2014-12-02 International Business Machines Corporation Use of vectorization instruction sets
US20110041118A1 (en) * 2009-08-11 2011-02-17 Sony Corporation Menu driven component based build system
US8812627B2 (en) * 2010-08-20 2014-08-19 Adobe Systems Incorporated System and method for installation and management of cloud-independent multi-tenant applications
US8407073B2 (en) 2010-08-25 2013-03-26 International Business Machines Corporation Scheduling resources from a multi-skill multi-level human resource pool
US20120260233A1 (en) * 2011-04-07 2012-10-11 Infosys Technologies Limited Method and system for automating development and customization of business applications
US8660878B2 (en) 2011-06-15 2014-02-25 International Business Machines Corporation Model-driven assignment of work to a software factory
US9710282B2 (en) 2011-12-21 2017-07-18 Dell Products, Lp System to automate development of system integration application programs and method therefor
US8943076B2 (en) 2012-02-06 2015-01-27 Dell Products, Lp System to automate mapping of variables between business process applications and method therefor
US8805716B2 (en) 2012-03-19 2014-08-12 Dell Products, Lp Dashboard system and method for identifying and monitoring process errors and throughput of integration software
US8782103B2 (en) 2012-04-13 2014-07-15 Dell Products, Lp Monitoring system for optimizing integrated business processes to work flow
US9606995B2 (en) 2012-04-30 2017-03-28 Dell Products, Lp Cloud based master data management system with remote data store and method therefor
US9158782B2 (en) 2012-04-30 2015-10-13 Dell Products, Lp Cloud based master data management system with configuration advisor and method therefore
US9015106B2 (en) 2012-04-30 2015-04-21 Dell Products, Lp Cloud based master data management system and method therefor
US8589207B1 (en) 2012-05-15 2013-11-19 Dell Products, Lp System and method for determining and visually predicting at-risk integrated processes based on age and activity
US9069898B2 (en) 2012-05-31 2015-06-30 Dell Products, Lp System for providing regression testing of an integrated process development system and method therefor
US9092244B2 (en) * 2012-06-07 2015-07-28 Dell Products, Lp System for developing custom data transformations for system integration application programs
US9805319B2 (en) * 2012-09-28 2017-10-31 Bmc Software, Inc. Application of business process management standards for dynamic information technology management
US9183074B2 (en) 2013-06-21 2015-11-10 Dell Products, Lp Integration process management console with error resolution interface
US9983977B2 (en) * 2014-02-26 2018-05-29 Western Michigan University Research Foundation Apparatus and method for testing computer program implementation against a design model
US9646064B2 (en) * 2014-12-10 2017-05-09 Salesforce.Com, Inc. Template based software container
US10021695B2 (en) 2015-04-14 2018-07-10 Qualcomm Incorporated Apparatus and method for generating and transmitting data frames
US10492114B2 (en) * 2016-03-22 2019-11-26 Futurewei Technologies, Inc. Method and system for managing radio connections with a virtual access point
US10498858B2 (en) 2016-12-14 2019-12-03 Dell Products, Lp System and method for automated on-demand creation of and execution of a customized data integration software application
CN111352823B (zh) * 2018-12-21 2023-03-21 北京字节跳动网络技术有限公司 一种测试方法及客户端、存储介质
CN113590087A (zh) * 2020-04-30 2021-11-02 深圳中砼物联网科技有限公司 快速开发软件的方法、计算机设备、及存储介质
CN112631591B (zh) * 2020-12-30 2024-02-27 深圳前海微众银行股份有限公司 表元素联动方法、装置、设备与计算机可读存储介质
CN112817666B (zh) * 2021-01-27 2023-07-21 北京字跳网络技术有限公司 定时方法、装置、电子设备和存储介质
CN114860235B (zh) * 2022-04-14 2024-04-09 西安交通大学 一种耦合商业软件与自编程软件的方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4828028A (en) * 1987-02-09 1989-05-09 Halliburton Company Method for performing fracturing operations
US5274572A (en) * 1987-12-02 1993-12-28 Schlumberger Technology Corporation Method and apparatus for knowledge-based signal monitoring and analysis
US5466157A (en) * 1991-06-12 1995-11-14 Atlantic Richfield Company Method of simulating a seismic survey
US5303582A (en) * 1992-10-30 1994-04-19 New Mexico Tech Research Foundation Pressure-transient testing while drilling
US5881230A (en) * 1996-06-24 1999-03-09 Microsoft Corporation Method and system for remote automation of object oriented applications
US6006230A (en) * 1997-01-15 1999-12-21 Sybase, Inc. Database application development system with improved methods for distributing and executing objects across multiple tiers
US6182756B1 (en) * 1999-02-10 2001-02-06 Intevep, S.A. Method and apparatus for optimizing production from a gas lift well

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7640509B2 (en) 2005-06-09 2009-12-29 Nec Electronics Corporation Program creation apparatus, program creation method and program
KR100818924B1 (ko) * 2006-05-03 2008-04-04 삼성전자주식회사 소프트웨어 모듈의 조합을 통해 dsp 코드를 생성하는장치 및 그 방법
US10761816B2 (en) 2007-10-01 2020-09-01 Samsung Electronics Co., Ltd. Method and system for determining interface compatibility based on component model
KR101019228B1 (ko) * 2007-10-22 2011-03-04 한국산업기술평가관리원 분산 컴퓨팅 기반 구조를 통해 센서 및 액튜에이터 애플리케이션을 개발, 배치하기 위한 시스템 및 방법
KR101507312B1 (ko) * 2010-06-15 2015-03-31 에스케이플래닛 주식회사 Ui 컴포넌트 구현 시스템, 단말 장치 및 상기 단말 장치의 ui 컴포넌트 구현방법
WO2013002546A2 (ko) * 2011-06-29 2013-01-03 (주)인성정보 유무선 통신망을 이용한 질병 관리 시스템 및 방법
KR101228586B1 (ko) * 2011-06-29 2013-01-31 (주)인성정보 유무선 통신망을 이용한 질병 관리 시스템 및 방법
WO2013002546A3 (ko) * 2011-06-29 2013-03-14 (주)인성정보 유무선 통신망을 이용한 질병 관리 시스템 및 방법
KR102130002B1 (ko) * 2020-04-24 2020-07-03 한화시스템 주식회사 소프트웨어 컴포넌트 표준을 이용한 차세대 함정 전투 체계 개발 플랫폼

Also Published As

Publication number Publication date
GB0214804D0 (en) 2002-08-07
GB2374176A (en) 2002-10-09
WO2001048603A1 (en) 2001-07-05
AU777835B2 (en) 2004-11-04
WO2001048603A9 (en) 2002-06-27
CA2393665A1 (en) 2001-07-05
AU2604401A (en) 2001-07-09
US20020104067A1 (en) 2002-08-01
JP2003518691A (ja) 2003-06-10
EP1242878A1 (en) 2002-09-25

Similar Documents

Publication Publication Date Title
KR20020097147A (ko) 새로운 컴포넌트를 생성 또는 구입하며 이들을 목록에추가할 수 있는 기능을 구비한 객체 지향 소프트웨어 개발툴
US10268525B2 (en) System and method for non-programmatically constructing software solutions
US6931621B2 (en) Method and system and article of manufacture for an N-tier software component architecture oilfield model
USRE43146E1 (en) Method and apparatus for providing a search engine for optimizing a decentralized or emergent model on a computer network
US7343605B2 (en) System and method for communicating between software applications, particularly MES (manufacturing execution system) applications
US20010052113A1 (en) Data processing system and development method
US20030200533A1 (en) Method and apparatus for creating software objects
KR20060087999A (ko) 확장가능 워크플로 모델에 관한 선언적 표현
US20050108684A1 (en) Method and system for generating an application object repository from application framework metadata
Larsson Applying configuration management techniques to component-based systems
US20030236925A1 (en) Interactive portable object adapters support in an integrated development environment
Altintas et al. Modeling product line software assets using domain-specific kits
US8423977B2 (en) Implementing a class oriented data flow program on a programmable hardware element
US8375355B2 (en) Conversion of a class oriented data flow program to a structure oriented data flow program
US8356290B2 (en) Conversion of a class oriented data flow program with inheritance to a structure oriented data flow program
US9141383B2 (en) Subprocess definition and visualization in BPEL
US8458682B2 (en) Conversion of a class oriented data flow program to a structure oriented data flow program with dynamic interpretation of data types
US10768912B1 (en) Platform class creation
Savikko Generative and Incremental Approach to Scripting Support Implementation.
Freudenreich et al. Implementing federated object systems
Savikko Generative and incremental implementation for a scripting interface
González Huerta Integration of Quality Attributes in Software Product Line Development

Legal Events

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