KR20020091071A - 소프트웨어 컴포넌트를 생성하기 위한 n-계층 소프트웨어아키텍처 디자인 방법 및 시스템 - Google Patents

소프트웨어 컴포넌트를 생성하기 위한 n-계층 소프트웨어아키텍처 디자인 방법 및 시스템 Download PDF

Info

Publication number
KR20020091071A
KR20020091071A KR1020027008439A KR20027008439A KR20020091071A KR 20020091071 A KR20020091071 A KR 20020091071A KR 1020027008439 A KR1020027008439 A KR 1020027008439A KR 20027008439 A KR20027008439 A KR 20027008439A KR 20020091071 A KR20020091071 A KR 20020091071A
Authority
KR
South Korea
Prior art keywords
software
layer
rules
software component
defining
Prior art date
Application number
KR1020027008439A
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=26869680&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR20020091071(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 베이커 휴지스 인코포레이티드 filed Critical 베이커 휴지스 인코포레이티드
Publication of KR20020091071A publication Critical patent/KR20020091071A/ko

Links

Classifications

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

Landscapes

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

Abstract

확장 가능한 N-계층 소프트웨어 어플리케이션을 설계하는데 있어서 소프트웨어 컴포넌트(도1의 20a, 20b, 20c)를 이용하기 위한 소프트웨어 아키텍처 디자인 시스템 및 그 방법을 설명한다. 이 방법은 소프트웨어 컴포넌트를 생성하기 위한 소프트웨어 컴포넌트 규칙을 규정하는 단계, 계층(tier)들을 생성하기 위한 계층 규칙을 규정하는 단계, 및 각 계층이 적어도 하나의 소프트웨어 컴포넌트와 결합되도록 하는 결합(association) 규칙 및 각 계층이 적어도 하나의 다른 계층과 연결되도록 하는 연결(linkage) 규칙을 포함하는 어셈블리 규칙의 집합을 규정하는 단계로 구성된다.
계층 규칙은 각 계층 규칙을 통해 생성된 계층이 소프트웨어 컴포넌트 규칙을 통해 생성된 적어도 하나의 소프트웨어 컴포넌트와 결합하도록 하는 결합규칙의 집합, 계층 내부의 소프트웨어 컴포넌트를 위한 구조화된 컨텍스트(context)를 제공하기 위한 계층 프레임워크 규칙의 집합, 및 계층의 특정 동작들의 집합을 제공하기 위한 프레임워크 규칙에 의하여 정의된 프레임워크 내부에서 인터페이스들을 논리적으로 분류하기 위해 제공하는 패키지 규칙들의 집합을 포함한다.

Description

소프트웨어 컴포넌트를 생성하기 위한 N-계층 소프트웨어 아키텍처 디자인 방법 및 시스템{METHOD OF AND SYSTEM FOR DESIGNING AN N-TIER SOFTWARE ARCHITECTURE FOR USE IN GENERATING SOFTWARE COMPONENTS}
소프트웨어 프로그램 코드를 디자인하고 생성하기 위하여 프로그래머나 코드 개발자들은 여러 가지 기술들을 사용하고 있다. 하나의 방법은 소프트웨어 어플리케이션을 데이터 저장 및 어플리케이션 로직과 같은 여러 가지 기능들이 완전히 결합된 "통일된(monolithic)" 구조로 만드는 것이다. 예를 들어, 어플리케이션이나 프로그램에 의하여 구현되어야 할 시스템 스펙(specifications)이나 기능들의 집합이 주어진 경우에, 코드 개발자는 원하는 기능들을 구현하는 통일되어 있고; 독립적으로 실행 가능한 프로그램을 디자인한다. 프로그래머는 예를 들어 C++과 같은 고급의 프로그램 언어나 개발 도구를 사용하여, 고급의 언어를 만들어 내고, 이를 컴파일하여 실행 가능한 프로그램을 제공한다.
이러한 방식의 문제점들 중 하나는 어플리케이션을 유지하기 어렵고, 프로그램의 모든 기능 부분들이 결합되어 있으며 프로그램마다 고유하여 이들을 재사용하기 곤란하다는 문제가 있다.
따라서, 소프트웨어 분야에서는 어플리케이션 기능을 더 작은 유닛들로 나눈 다양한 소프트웨어 아키텍처가 개발되어 왔다. 이러한 유닛들을 조합하면 원하는 어플리케이션을 위한 전체 기능을 제공할 수 있게 된다. 예를 들어, 컴포넌트들의 그룹을 어셈블하고 컴파일하여 단일의 실행 가능한 프로그램을 제공할 수 있다. 또는, 특정 컴포넌트의 기능이 필요한 경우에 해당 컴포넌트를 실시간으로 호출하여 사용할 수 있다.
이러한 유닛들을 개발하기 위해서는 자원(resource)을 소모해야 하기 때문에 후속 어플리케이션 개발과정에서는 그러한 기능이 필요할 때마다 위 유닛들은 다시 개발할 필요 없이 이들을 재사용하는 것이 바람직하다. 2-계층 및 3-계층 아키텍처들과 같은 현재의 소프트웨어 아키텍처에서 데이터 저장부나 사용자 인터페이스와 같은 몇몇 부분은 상대적으로 재사용하기에 용이하다. 그러나, 어플리케이션 로직을 구현하는 것과 같은 다른 종류의 컴포넌트들은 여전히 큰 블록으로 뭉쳐 있어서 컴포넌트나 다양한 기능들을 재사용하기에 어렵다. 따라서, 위와 같은 종래기술의 단점을 해결하기 위해서는 보다 향상된 소프트웨어 컴포넌트 아키텍처 및 관련된 소프트웨어 개발 기술이 필요하게 되었다.
본 발명은 소프트웨어 아키텍처를 디자인하는 소프트웨어에 관련된 것으로서 특히, 컴파일되고, 인터프리트되고, 작동중인(on-the-fly) 어플리케이션을 포함하는 계층(tier)을 확장할 수 있는 계층 소프트웨어 컴포넌트 어플리케이션을 개발하기 위한 소프트웨어 컴포넌트 아키텍처를 디자인하는 것에 관련된 것이다.
도 1은 본 발명의 "N-계층 아키텍처" 개념을 나타내는 다이어그램.
도 2는 소프트웨어 공장(factory)을 나타내는 설명도.
도 3은 프레임워크를 나타내는 다이어그램.
도 4는 규칙들의 플로우챠트.
도 5는 본 발명의 라이프사이클 규칙을 나타내는 플로우챠트.
도 6은 본 발명에서 소프트웨어 컴포넌트들을 생성하기 위해 사용하는 소프트웨어 아키텍처 디자인 방법.
<도면의 주요부분에 대한 부호의 설명>
20: 소프트웨어 컴포넌트30: 계층
40: 프레임워크700: 소프트웨어 컴포넌트 목록
도 1을 참조하면, 본 발명은 엔지니어링 및 생산(manufacturing) 중심의 접근 방식을 잘 정의된(well-defined) 아키텍처에 기반한 소프트웨어 생산에 적용하는 방법들로 구성된다. 이하에서 생산(manufacturing)은 소프트웨어 공장과 유사한 의미로 사용된다. 본 발명에 의한 방법을 사용하면, 소프트웨어 어플리케이션 개발은 모든 형태의 지적 자산들을 신속하고 저 비용으로 결합할 수 있는 조립(assembly) 라인을 가진 소프트웨어 생산 절차와 같이 진행될 수 있다.
본 발명은 N-계층 아키텍처 개념을 사용한다. N-계층 아키텍처에서, 모든 기능들은 시스템 레벨로부터 잘 정의된 비즈니스 기능(business function)을 수행하는 논리 단위 또는 계층(30)으로 세분화된다. 본 발명의 N-계층 아키텍처에서 계층(30)의 수에는 제한이 없다.
본 발명의 N-계층 소프트웨어 디자인 아키텍처는 소프트웨어 컴포넌트(20, 도1의 20a, 20b, 20c)를 개발하기 위하여 이용된다. 프로그래밍 분야의 당업자들이 이해하는 바와 같이, 종래기술의 N-계층은 프로토콜 스택과 같이 계층구조(hierarchy)를 의미하는 것으로 생각될 수 있다. 그러나 이하에서 N-계층은 N개의 계층(30)들로 특징되는 아키텍처를 의미한다. 비록 계층들에 대하여 하나의 계층구조(hierarchy)가 정의될 수는 있으나, 본 발명에 의한 N-계층에는 어떠한 계층구조도 내포하고 있지 않다.
각 소프트웨어 컴포넌트(20)는 각 소프트웨어 컴포넌트(20) 및 계층(30)에 의하여 수행될 기능의 특징에 따라 적어도 하나의 계층(30)과 결합되어 있다. 본 발명은 N-계층 시스템을 구현하는 아키텍처를 생성하는 방법 및 시스템에 관한 것으로서 이를 통하여 소프트웨어 컴포넌트 디자이너는 각 소프트웨어 컴포넌트가 정해진 기능을 수행하도록 하거나, 각 소프트웨어 컴포넌트(20)가 각 계층을 위해 아키텍처에 의해 정해진 인터페이스를 갖도록 한다.
본 발명에 의한 방법을 사용할 때, 계층(30)의 수 또는 소프트웨어 컴포넌트(20)의 수에는 제한이 없다. 아키텍처를 위한 규칙에 의하면, 계층들(30)은 2 또는 3-계층 시스템에서와 같이 계층구조(hierarchy)의 일부일 필요는 없으나, 주어진 계층(30) 내부에서 소프트웨어 컴포넌트(20)가 하나 또는 그 이상의 다른 계층들(30)에 속한 다른 소프트웨어 컴포넌트들(20)과 상호작용 하는 것이 필요한 것처럼, 각 계층(30)은 하나 또는 그 이상의 다른 계층(30)과 상호작용 할 수 있도록 표준화된 인터페이스를 사용하여 논리적으로 연결되어야 한다.
본 발명에 있어서 아래의 용어들은 프로그래밍 분야의 당업자에게 있어서 다음 정의와 같이 이해된다.
용어 정의
아키텍처 디자인을 만들기 위한 디자인 원칙 및 규칙의 집합
COM 컴포넌트 객체 모델링(Component Object Modeling)
컴포넌트 기능이 어떻게 구현되어 있는지에 관한 상세한 사항들을 캡슐화하며(숨기며) 이진 레벨에서 재사용할 수 있는 잘 정의된 인터페이스를 가지고 있는 객체.
CORBA 코바(Common Object Request Broker Architecture)
DCOM 분산 컴포넌트 객체 모델(Distributed Component Object Model)
DLL 다이나믹 링크 라이브러리(Dynamic Link Library)
이벤트 핸들러 메시지 처리 객체
프레임워크 비즈니스 객체의 특성을 변경하거나 새로운 동작을 추가하는, 비즈니스 객체를 위한 구조화된 컨텍스트(context)
GUID 전역 지시자(Globally unique identifier) 예를 들어, 소프트웨어 컴포넌트를 유일하게 지시하기 위하여 미리 정해진 수의 비트를 가지는 숫자.
JAVA 프로그래밍 언어의 하나
모델 소정의 규칙들의 집합을 통해서 관계가 정해진 컴포넌트들의 혼성 모임; 계층별로 조직화할 수 있는 소프트웨어 컴포넌트들의 모임이나 추상화(instantiation)
객체 프로그래밍 구조의 인터페이스를 통해서만 접근 가능하고, 하나의 유닛으로 정의되고 할당된 데이터와 함수를 모두 캡슐화하는 프로그래밍 구조. COM 객체는 적어도 객체가 사용되는 도중에 객체의 존재를 유지하고, 객체의 다른 인터페이스를 제공하는 IUnknown 인터페이스를 반드시 지원해야한다.
패키지 메시징이나 커넥팅과 같은 구체적인 동작을 제공하는 것으로서 프레임워크 안에서 인터페이스를 논리적으로 분류한 것.
싱크 메시징을 위한 연결 싱크(sink)
소스 메시징을 위한 연결 소스(source)
계층 잘 정의(well-defined)되어 있고, 소정의 기능을 수행하는 컴포넌트들의 논리적인 분류(grouping).
본 발명의 범위는 청구항에 기재된 것과 같고, 이와 같은 설명은 발명의 범위를 제한하는 것은 아니며 소프트웨어 프로그래밍 분야의 당업자가 본 발명을 보다 용이하게 이해할 수 있도록 하기 위함이다. 위와 같은 기능들, 명명법, 및 COM 객체 등의 일반에 대한 보다 더 구체적인 정보는 일반적으로 MSDN(마이크로소프트 개발자 네트워크) 라이브러리(1999년 1월, 마이크로소프트 출판)에서 찾아 볼 수 있다.
주어진 산업의 필요와 특징을 만족시키기 위해, 본 발명의 원리, 규칙, 및방법을 이용하여 N-계층 아키텍처를 디자인 할 수 있다. 본 발명에 따라서 디자인된 특정한 N-계층 아키텍처는 어플리케이션을 위한 소프트웨어 컴포넌트(20)를 생성하기 위하여 사용된다. 이하에서 "어플리케이션"은 당업자들이 알고 있는 것과 같이 예를 들어(한정이 아님) CORBA, JIT(just in time) JAVA 등과 같이 컴파일되고, 인터프리트되고, 작동중인(on the fly) 어플리케이션을 포함하는 것으로 이해된다. "위저드" 또는 다른 코드 개발 도구는 특정한 N-계층 아키텍처에 기반하여 디자인할 수 있는데, 이런 위저드나 코드 개발 도구로 인하여 코드 개발자는 상기 아키텍처의 스펙(specification) 내에서 소프트웨어 컴포넌트(20)들을 생성할 수 있게 된다. 예를 들어, 위저드는 코드 디자이너로 하여금 소프트웨어 컴포넌트(20)를 위한 계층(30)을 선택하도록 하고, 소프트웨어 컴포넌트가 상기 계층(30)의 소프트웨어 컴포넌트(20)를 위해 지정된 인터페이스 표준에 부합하도록 함으로써 소프트웨어 컴포넌트(20)를 생성할 수 있도록 한다.
도 1을 참고하면, 본 발명은 본 발명을 사용하여 디자인된 N-계층 아키텍처에서 어플리케이션이 만들어지도록 하기 위한 규칙 및 방법들을 나타내는 방법론(methodology)을 정의한다. 본 발명에 의해 생성된 아키텍처를 사용하여 만들어진 전형적인 어플리케이션은 다음에서 설명하는 규칙들에 따라, 시스템 레벨에서 비즈니스 기능과 같이 잘 정의된 기능을 수행하는 논리 단위 또는 계층(30)으로 나누어진 기능을 가지고 있다. 본 실시예에서, 각 계층(30)은 유사한 형태의 동작을 갖는 소프트웨어 컴포넌트(20)들을 논리적으로 분류한다.
프레임워크(40)는 계층(30)에 포함된 소프트웨어 컴포넌트(20)들을 위한 구조화된 컨텍스트(context)이다. 즉, 프레임워크(40)는 기본 소프트웨어 컴포넌트(20)들 및 위 계층(30)에 속하는 것으로 구분된 소프트웨어 컴포넌트(20)를 위한 표준 인터페이스의 집합을 포함하는 기본 디자인 구조를 나타낸다. 프레임워크(40)는 소프트웨어 컴포넌트(20)를 모으고 인터페이스를 나타내기 위한 방법을 제공하는 하나 이상의 패키지를 포함한다. 패키지(42)는 메시징이나 커넥팅(connecting)과 같은 특정 동작을 제공하는 인터페이스들의 집합이다. 프레임워크(40)는 하나 이상의 패키지(42)를 포함한다.
따라서, 각 계층(30)은 본 발명에 따른 규칙에 부합하는 개별 소프트웨어 컴포넌트(20)들을 포함하는 패키지(42)를 논리적으로 분류한(grouping) 것이다. 본 실시예에서 어플리케이션을 위하여 생성되고 어플리케이션에 의해 사용되는 모든 소프트웨어 컴포넌트(20)들은 컴포넌트들의 목록(inventory)(700)에 기록되고 각 소프트웨어 컴포넌트(20)는 다른 어플리케이션을 위하여 재사용된다. 그리하여 소프트웨어 컴포넌트들(20)은 목록에 없는(off the shelf) 컴포넌트들을 포함하여 인터페이스를 사용할 수 있는 다른 소프트웨어 컴포넌트(20)에 의하여 이용이 가능해진다. 목록에 없는 컴포넌트들, 예를 들어 새로 구입한 컴포넌트들은 본 발명에 따른 N-계층 아키텍처의 요구에 따라서 소정의 인터페이스를 상기 목록에 없는 컴포넌트에 부가함으로써 본 발명의 N-계층 아키텍처에 합쳐질 수 있다.
본 발명은 특정 N-계층 아키텍처에 따라서 개발된 소프트웨어 아키텍처가 여러 가지 방식으로 사용될 수 있도록 하는 규칙 및 방법을 포함한다. 예를 들어, 독자적으로 실행 가능한 프로그램을 제공하기 위하여 한 그룹의 N-계층 아키텍처 소프트웨어 컴포넌트들(20)을 어셈블하고, 컴파일할 수 있도록 하는 규칙들이 존재할 수 있다. 또한, 새로운 어플리케이션을 신속하게 만들기 위하여 소프트웨어 컴포넌트(20)가 계층(30)과 결합되고 실시간으로 호출될 수 있도록 하는 규칙들이 존재할 수 있다.
본 발명은 새로운 소프트웨어 컴포넌트(20)를 만들거나 구입하여 나중에 사용하기 위해 목록(700)에 저장하도록 하는 규칙을 더 포함한다. 목록(700)은 후속 어플리케이션을 위해 재사용될 수 있다. 더 많은 소프트웨어 컴포넌트(20)들이 개발되면서, 목록(700)은 더 커지게 되어 결과적으로 새로운 어플리케이션을 개발하기 위해 필요한 시간과 자원(resource)이 줄어들게 된다.
본 발명은 또한 주어진 N-계층 아키텍처에 예를 들어 새로운 계층(30)을 첨가함으로써 N+1-계층의 아키텍처로 확장하도록 하는 규칙을 포함한다. 선행하는 N-계층 아키텍처를 위해 개발된 많은 소프트웨어 컴포넌트(20)들은 N+1-계층 아키텍처에서도 재사용할 수 있게 되고 다른 것들도 약간의 손질을 거쳐 재사용할 수 있게 된다.
일 실시예에서, 본 발명은 구체적인 번호와 형식을 가지는 초기 계층들(30) 및 각 계층(30)을 위한 구체적인 인터페이스 구조를 가지는 N-계층 아키텍처를 정의하고 생성하기 위한 규칙들을 제공한다. 위에서 각 초기 계층(30)들은 비즈니스 로직(프로세싱), 데이터 등의 시스템 기능의 주요한 부분을 충족시킨다.
본 발명을 이용하여 정의되고 구현된 N-계층 아키텍처는 지질산업 형태의 비즈니스 객체는 물론 조선업 또는 의학과 같은 여러 가지 산업이나 컨텍스트에서 채택될 수 있다. 본 발명을 사용하여 정의되고 구현된 각 계층(30)은 각 계층과 결합된 소프트웨어 컴포넌트(20)가 갖추어야 하는 인터페이스의 형태를 구체적으로 나타낸다. 이러한 인터페이스는 일 형태의 계층(30)에 포함된 소프트웨어 컴포넌트(20)에 다른 계층(30)에 포함된 소프트웨어 컴포넌트(20)가 접근할 수 있도록 하는 N-계층 아키텍처를 위한 표준화된 인터페이스이다. 본 발명을 사용하여 소프트웨어 컴포넌트 디자이너들은 소프트웨어 컴포넌트(20)를 위한 계층(30)에 의해 규정된 인터페이스에 기초하여 다른 소프트웨어 컴포넌트(20)에 접근할 수 있는 소프트웨어 컴포넌트(20)를 생성하기 위한 규칙을 정의한다.
일 실시예에서 본 발명을 사용하여 정의되고 구현된 N-계층 아키텍처는 주어진 계층(30)이 접근할 수 있어야 하는 다른 형식의 소프트웨어 컴포넌트(20)를 명시할 수 있다. 또 다른 실시예에서는 위의 사항은 소프트웨어 컴포넌트 디자이너에 달려있다.
어떤 계층(30)으로 분류된 여러 가지 형식의 소프트웨어 컴포넌트들(20)의 성질에 따라서 위 계층(30)은 유일한 인터페이스 집합을 가진다. 좀더 일반적인 인터페이스들은 구체적이고 일반적인 제1 인터페이스를 가지며, 이러한 인터페이스는 소프트웨어 컴포넌트(20)의 의존관계들이 상기 소프트웨어 컴포넌트(20)에 의하여 수집되도록 하고 다른 컴포넌트들에 의하여 접근되도록 한다. 일반적인 제2 인터페이스는 소프트웨어 컴포넌트(20)가 다른 컴포넌트에 의하여 실시간으로 지시(identify)될 수 있도록 한다.
일 실시예에서 본 발명의 N-계층 아키텍처는 소프트웨어 컴포넌트(20)가 비동기 메시징을 통하여 비동기 통신을 수행하도록 하는 비동기 아키텍처 개념을 이용할 수 있다.
본 실시예에서 소프트웨어 컴포넌트(20) 인터페이스들은 마이크로소프트의 COM 스펙을 사용하여 구현된다. 예를 들어 Don Box의 Essential COM(Addison Wesley Longman Inc. 1998년 출간, ISBN 0-201-63446-5)을 참조한다. 외부에서는 소프트웨어 컴포넌트(20)의 외부 인터페이스만을 볼 수 있다. Active X와 같은 공통 상호작용 표준(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)를 포함하고, 로그(log)에 테스트 결과를 기록하며, 개발자에게 테스트 완료 상태를 알린다. 템플릿 계층(30)의 소프트웨어 컴포넌트(20)는 본 발명의 표준 소프트웨어 컴포넌트를 위한 퍼시스턴스(persistance), 컬렉션(collection), 및 반복자(iterator)들의 C++ 구현을 제공할 수 있다.
소프트웨어 공장을 그림으로 나타낸 도 2를 참고하면, 구입하거나 새로 만든 소프트웨어 컴포넌트(20)는 당업자에게 익숙한 라이브러리 또는 카탈로그 프로세스를 사용하는 장래의 용도를 위해서 목록(700)에 저장할 수 있다. 소프트웨어 컴포넌트(20) 인터페이스들은 표준화되어 있고, 이들의 기능은 소프트웨어 컴포넌트(20)의 고유한 특성 및 동작에 의해 제한된다. 본 발명의 개념은 소프트웨어 어플리케이션 공장과 같은 소프트웨어 어플리케이션 조립라인이다. 11과 같이 어플리케이션 요구조건들이 우선 결정된다. 이때, 현재의 목록(700)을 조사하여(12) 소프트웨어 컴포넌트(20)가 새로운 어플리케이션 요구조건에 부합하는지를 검토한다. 시스템 요구조건에 맞는 소프트웨어 컴포넌트(20)가 없는 경우에는 구입하거나 새로 생성된 소프트웨어 컴포넌트를 목록에 부가할 수 있다(13). 이때 새로운 어플리케이션은 이미 존재하는 소프트웨어 컴포넌트(20) 및/또는 새로운 소프트웨어 컴포넌트로부터 생성될 수 있다. 실시간으로 소프트웨어 컴포넌트(20)들을 결합하여 새롭고 고유한 어플리케이션을 즉석에서(on the fly) 생성할 수 있게 됨으로써 소프트웨어를 재사용하는 것이 실제적으로 가능해 진다.
도 3을 참고하면, 프레임워크(40)는 계층(30)에 있는 소프트웨어 컴포넌트(20)를 위한 구조화된 컨텍스트(context) 즉, 프레임워크(40)는 계층(30)의 기본 소프트웨어 컴포넌트(20)를 포함하는 기본 디자인 구조를 나타낸다. 더구나 프레임워크(40)는 그 계층(30)에 포함되는 소프트웨어 컴포넌트(20)를 위한 표준 인터페이스의 집합을 나타낸다. 프레임워크(40)는 계층(30)을 위한 템플릿 또는 디자인 패턴으로 기능하여, 계층(30)의 기본 디자인을 프로젝트 전반에 걸쳐서 일정하도록 보장한다.
본 발명에서 프레임워크(40)는 다른 프레임워크(40)들에 대한 의존관계, 속성들(properties)과 인터페이스들이 어떻게 분류되는지, 어떠한 인터페이스가 사용되는지, 및 소프트웨어 컴포넌트(20)의 동작이 어디에 속하는지 등을 포함하여, 대응하는 계층(30)을 위한 주요 디자인 결정들을 포함한다. 예를 들어, 비주얼 계층(30) 프레임워크(40)에서, 모델-뷰-컨트롤러(MVC)는 비주얼 소프트웨어 컴포넌트(20)를 위한 작업 영역을 나타내는데 사용할 수 있다. MVC에서 데이터는 모델에 의하여 처리되고, 입력에 대한 반응은 컨트롤러에 의해 처리되며, 뷰 컴포넌트는 드로잉 작업을 처리한다. 기능들을 이러한 방식으로 나눔으로써, 다른 비즈니스 모델들도 동일한 컨트롤러로 사용하거나 동일한 비즈니스 모델에서 여러 가지 다른 뷰들을 사용할 수 있다.
도 4를 참고하면, 본 발명에 따른 방법은 시스템 생산이 계속되는 한 소프트웨어 어플리케이션 시스템의 계층(30)들이 확장될 수 있고, 변할 수 있도록 한다. 따라서, 시스템은 미리 정해진 수의 계층에 제한되지 않고 아키텍처 및 그 어플리케이션의 진행에 따라서 계층(30)을 추가하거나, 변형하거나, 삭제할 수 있게 된다.
시스템 디자이너는 소프트웨어 컴포넌트 규칙(210)의 집합을 규정하는데(200), 각 소프트웨어 컴포넌트 규칙(210)은 적어도 하나의 소프트웨어 컴포넌트(20) 집합에 대하여 주어지는 프로그램 인터페이스를 포함한다. 소프트웨어 컴포넌트 규칙(210)의 집합은 여러 개가 있을 수 있으나, 본 실시예에는 하나만 존재한다. 소프트웨어 컴포넌트 규칙(210)에는 부가, 변경, 및 삭제 규칙들과 같은 소프트웨어 컴포넌트(20) 확장에 관한 규칙을 더 포함할 수 있다.
소프트웨어 컴포넌트 규칙(210)을 규정하는 데에는 각 소프트웨어 컴포넌트(20)의 동작을 나타내기 위한 규칙들을 더 포함한다. 이러한 소프트웨어 컴포넌트(20)의 동작을 위한 규칙(210)은 각 소프트웨어 컴포넌트(20)가 기능이 구현되는 구체적인 방법을 어떻게 캡슐화할 것인지에 관한 규칙, 및 다른 소프트웨어 컴포넌트(20)를 이용할 수 있도록 하는 잘 정의된 인터페이스를 각 소프트웨어 컴포넌트(20)마다 이진 레벨에서 재사용할 수 있도록 생성하는 방법에 관한 규칙을 더 포함한다. 소프트웨어 컴포넌트 규칙(200)은 다른 소프트웨어 컴포넌트(20)로 하여금 목록에 있는 소프트웨어 컴포넌트(20)를 사용할 수 있도록 한다.
소프트웨어 컴포넌트 규칙을 규정하는 것(200)은 또한 소프트웨어 컴포넌트에 데이터를 전달하는 것, 소프트웨어 컴포넌트(20)로부터 데이터를 전달받는 것, 소프트웨어 컴포넌트(20)의 속성을 처리하는 것, 및 소프트웨어 컴포넌트(20)를 라이브러리화하거나 카달로그화 하는 것에 관한 규칙(210)을 규정하는 것을 포함한다.
소프트웨어 컴포넌트 규칙을 규정하는 것(200)은 또한 소프트웨어 컴포넌트 기능(function) 포인트들을 지시하기 위한 규칙들을 규정하는 것을 포함할 수 있으며, 이러한 소프트웨어 컴포넌트 기능(function) 포인트들을 지시하기 위한 규칙들은 상기 소프트웨어 컴포넌트(20)가 속하는 특정 계층(30)이 필요로 하는 소프트웨어 인터페이스를 구현하도록 한다.
소프트웨어 컴포넌트 규칙을 규정하는 것(200)은 소프트웨어 컴포넌트로부터 속성(property)을 부가, 변화, 및 제거하는 것과 같은 소프트웨어 컴포넌트(20) 속성 처리를 위한 규칙을 규정하는 것을 포함한다. 여기에는 적어도 하나의 변형(modification) 소프트웨어 컴포넌트 규칙(200)이 필요하다. 이를 통하여 소프트웨어 컴포넌트 규칙(200)의 집합으로부터 생성된 소프트웨어 컴포넌트(20)를 개별적으로 변형하거나 소프트웨어 컴포넌트(20) 규칙 전체를 한번에 처리하거나, 부가하거나, 삭제할 수 있다. 다른 처리 규칙들 또한 규정될 수 있다. 예를 들어(한정이 아님), 결합(associations)에 접근하기 위해서 템플릿 반복자 클래스를 가지는 것이 바람직하다. 이러한 템플릿 반복자 클래스는 어떠한 소프트웨어 컴포넌트(20) 결합에도 근거할 수 있고, 결합에 있는 모든 소프트웨어 컴포넌트들(200 또는 특정 소프트웨어 컴포넌트 형식을 반복하는데 사용될 수 있다.
라이브러리 소프트웨어 컴포넌트들을 라이브러리화 하는 규칙(210)에는 목록(700)으로부터 소프트웨어 컴포넌트(20)를 선택적으로 검색하기 위한 규칙들뿐만 아니라, 또한 소프트웨어 컴포넌트(20)를 소프트웨어 컴포넌트 목록에 부가, 변경, 및 삭제하기 위한 규칙을 포함한다. 여기에는 질의 가능한 소프트웨어 컴포넌트 목록(700)에 소프트웨어 컴포넌트 규칙(210)을 이용하여 생성한 소프트웨어 컴포넌트들(20)의 집합을 분류하는 라이브러리 규칙의 집합을 규정하는 것이 포함될 수 있다. 이로써, 목록에 소프트웨어 컴포넌트(20)를 선택적으로 배치시키거나, 목록(700)으로부터 소프트웨어 컴포넌트(20)를 검색할 수 있게 된다. 부가적으로, 라이브러리 규칙은 목록(700)에 없는 소프트웨어 컴포넌트(20)를 목록(700)에 부가할 수 있도록 한다.
소프트웨어 컴포넌트(20)는 프로세싱을 시작하고 계속하라는 메시지를 수신하고 다른 소프트웨어 컴포넌트(20)도 이와 같은 메시지를 전송함으로써 프로세스를 독립적으로 수행할 수 있다. 따라서, 본 발명은 기본 아키텍처에 있어서 비동기 동작을 허용하는 소프트웨어 컴포넌트 규칙(210)을 포함한다. 비동기 동작이란 각 소프트웨어 컴포넌트(20)가 각자의 스레드 및 시간 프레임 안에서 동작하고, 종속하는 소프트웨어 컴포넌트(20)들에 그 상태를 알리고, 중요한 이벤트가 발생하면 그에 관한 정보를 제공한다. 본 발명의 모든 소프트웨어 컴포넌트들(20)은 독립적으로 동작하기 때문에, 어떤 소프트웨어 컴포넌트(20)에 대해서도 그 상태를 조회할 수 있다.
본 발명의 시스템에서 비 결합된 소프트웨어 컴포넌트(20)들은 비동기 프로세스인 본 발명의 메시징 시스템을 통하여 통신을 한다. 메시지는 소프트웨어 컴포넌트(20)들 사이에서 이벤트, 정보, 및 상태를 전달한다. 각 소프트웨어컴포넌트(20)는 시스템의 다른 소프트웨어 컴포넌트(20)에 의해 발생한 메시지나 이벤트에 반응하여 작동하는 이벤트 구동 방식일 수 있다. 반대로, 각 소프트웨어 컴포넌트(20)는 각자의 이벤트를 발생시키며 시스템의 다른 소프트웨어 컴포넌트들(20)에게 이들을 전달한다.
이러한 아키텍처의 결과 소프트웨어 컴포넌트(20)들은 독립적으로 동작하고, 유지보수를 쉽게 하며, 소프트웨어 컴포넌트(20)의 용도가 증가하게 된다.
계층 규칙(310) 또한 규정되어야 한다(300). 계층 규칙(310)에는 어떤 계층(30)이 소프트웨어 컴포넌트 규칙(210)을 통해서 생성된 소프트웨어 컴포넌트(20)의 집합과 어떻게 결합되는지에 관한 규칙들이 포함된다. 계층 규칙(310)은 계층들(30)이 프로그램적으로 인터페이스되도록 하는 인터페이스 규칙을 포함한다. 소프트웨어 컴포넌트 처리 규칙들은 계층에 소프트웨어 컴포넌트들을 부가, 변경, 및 삭제할 수 있도록 하고, 소프트웨어 컴포넌트(20) 테스팅 규칙들은 이러한 소프트웨어 컴포넌트들(20)이 계층 규칙(310)에 부합되도록 한다. 부가적으로, 계층 규칙(310)은 계층(30)과 결합된 소프트웨어 컴포넌트(20)들의 성질을 변경할 수 있도록 하는 규칙들을 규정함으로써 계층(30)들을 확장할 수 있도록 한다.
계층 규칙(30)은 프레임워크(40)들 사이의 의존관계, 속성(properties) 및 인터페이스들이 어떻게 분류되었는지, 어떤 인터페이스들이 사용되는지, 및 계층(30)내에서 소프트웨어 컴포넌트(20)가 어디에 속하는지를 나타내는 프레임워크 규칙을 더 포함한다.
프레임워크 규칙은 프레임워크(40)를 위한 특정 동작을 제공하는 인터페이스들의 집합을 포함하는 프레임워크(40)를 위한 적어도 하나의 패키지(42)를 규정하는 규칙을 더 포함한다.
계층 규칙(310)은 또한 소프트웨어 컴포넌트(20)를 가지고 계층들(30)을 결합하고, 프로세스 절차와 프로세싱 상태를 연결 및 설정하기 위하여 제공된다.
부가적으로, 계층(30)안에 있는 소프트웨어 컴포넌트(20)들을 다시 정의하거나 어플리케이션에서 전체 계층들(30)을 부가하거나 삭제하는 것이 바람직한 때가 있다. 따라서, 계층(30)과 결합되거나 분리되어야 하는 소프트웨어 컴포넌트 규칙(210)을 가지고 생성된 소프트웨어 컴포넌트(20)를 위해서 결합 규칙이 제공된다. 계층 규칙(300)에는 동작 규칙, 인터페이스 규칙, 및 다른 계층(30)들과의 의존관계를 정의하는 규칙들이 더 포함된다.
어셈블리 규칙(410)은 계층(30)들 및 소프트웨어 컴포넌트(20)를 최종 어플리케이션에 결합시키는 방법에 관한 규칙을 포함한다. 예를 들어(한정이 아님), 계층(30)에 있는 소프트웨어 컴포넌트(20)를 위한 기본 컴포넌트로 구성되는 기본 디자인 구조를 규정하는 것, 계층(30)에 포함되는 것으로 구분된 소프트웨어 컴포넌트(20)를 위한 표준 인터페이스 집합을 규정하는 것이 포함된다. 부가적으로 어셈블리 규칙(410)은 소프트웨어 컴포넌트(20)가 계층 인터페이스, 프레임워크 인터페이스, 및 패키지 인터페이스와 같은 요구조건에 부합하도록 하는 테스팅 규칙을 더 포함한다. 또한, 예를 들어(한정이 아님) 통신 인터페이스를 통해 소프트웨어 컴포넌트(20)가 그 동작 능력을 정의하는 것은 물론, 작동중인(on the fly) 어플리케이션을 위한 컴포넌트 의존관계 및 연결 규칙들을 정의하는 하나 또는 복수의 규칙이존재할 수 있다.
라이프사이클 플로우차트인 도 5를 참고한다. 본 발명의 방법에 의하면 라이프사이클 규칙의 집합을 사용하여 본 발명의 아키텍처를 변화시키는 어플리케이션 개발이 가능하다. 예를 들어(한정이 아님), 원하는 소프트웨어 아키텍처를 정의하는 규칙들은 위에서 설명한 방법으로 디자인되거나 이미 존재하는 규칙들의 집합으로부터 선택된다. 본 발명에 따른 방법을 사용하여 디자인된 소프트웨어 아키텍처는 초기 디자인(50)을 위해 소프트웨어 컴포넌트 규칙(210), 계층 규칙(310), 및 어셈블리 규칙(410)을 사용하여 소프트웨어 컴포넌트(20), 계층(30), 및 어플리케이션을 생성한다. 초기 디자인은 소정의 개수의 초기 계층(30)을 가질 수 있다.
구현된 시스템은 생산에 들어가고(52), 필요할 지 모르는 조정(adjustment)을 위하여 주기적으로 조사된다(54). 만일 어떤 계층(30)을 수정(56)하고자 한다면, 이를 제거하거나 변경할 수 있다(58). 부가적인 요구조건이 발생하면(60), 새로운 소프트웨어 컴포넌트(20)들을 생성하거나 기존의 소프트웨어 컴포넌트(20)들을 변경한다(62, 64). 어플리케이션 요구조건대로 계층(30)들을 추가하거나, 수정하거나, 삭제할 수 있다.
도 6을 참고하면, 일단 필요한 모델 및 소프트웨어 컴포넌트(20)의 목록이 결정되면(70), 소프트웨어 컴포넌트(20)들이 논리적으로 분류된다(72). 이때, 어떤 소프트웨어 컴포넌트(20)가 이미 목록(700)에 존재하는지 결정해야 한다(74, 76). 가능하면 언제나, 목록(700)으로부터 소프트웨어 컴포넌트(20)를 재사용해야 한다(78). 호환성을 위하여 현재의 아키텍처에 부합하지 않는 소프트웨어컴포넌트(20)들은 원래 요구조건을 유지하면서 재구성되어야 한다.
부가적인 소프트웨어 컴포넌트(20)들은 스펙(specification)과 현재의 목록(700)을 참조하여 필요에 따라서 생성될 수 있다(80). 새로운 또는 변형된 소프트웨어 컴포넌트(20)가 성공적으로 테스팅 및 입증(validation) 단계를 통과하면, 상기 새로운 또는 변경된 소프트웨어 컴포넌트(20)는 목록(700)의 일부가 되기에 적합한(82)지 평가된다. 재사용 가능성이 있는 소프트웨어 컴포넌트(20)들은 목록(700)에 부가된다(88). 위와 같은 새로운 또는 변형된 소프트웨어 컴포넌트(20)는 이러한 방식으로 현재의 아키텍처에 편입되어 아키텍처를 확장시킨다. 즉, 하나 또는 그 이상의 계층(30)들을 부가하여 수용한다. 표준 인터페이스에 대한 명확한 정의에 의하면, 한 계층(30)의 소프트웨어 컴포넌트(20)는 다른 계층(30)의 소프트웨어 컴포넌트(20)에 의하여 사용될 수 있어서, 계층(30)들간의 관계가 덜 중요하게 된다. 그러나 실제로는 어떤 소프트웨어 컴포넌트(20)들은 우선적으로 다른 소프트웨어 컴포넌트(20)들에 의하여 사용될 수 있다.
도 4를 참고로 실시예의 동작을 살펴보면, 본 발명의 방법을 사용하여 소프트웨어 아키텍처(50)를 생성하는 시스템 디자이너는 소프트웨어 컴포넌트(20)를 생성하기 위하여 소프트웨어 컴포넌트 규칙(210)의 집합을 규정한다.
시스템 디자이너는 또한 계층(30)들을 생성하기 위하여 계층 규칙(310)들의 집합을 규정한다(300).
시스템 디자이너는 또한 어셈블리 규칙(410)의 집합을 규정한다(400). 연결(linkage) 규칙(410)은 선택된 계층(30)이 테스팅 또는 위저드 계층(30)과 같이 독립적으로 동작할 수 있도록 한다. 또한 시스템 디자이너는 각 계층(30)에 대한 각 계층(30) 내부에서 실행 가능한 기능들의 집합을 정의하는 인터페이스들의 집합을 규정한다. 때로는 계층(30)들의 집합이 규정되는 데, 이러한 집합에 포함된 각 계층(30)은 동일한 기능의 집합을 갖게 된다.
일단 소프트웨어 아키텍처가 조직되면, 상기 소프트웨어 아키텍처 사용자는 아키텍처와 규칙들을 사용하여 적어도 하나의 소프트웨어 컴포넌트(20)와 결합할 수 있는 복수의 계층(30)을 포함하는 확장 가능한 N-계층 아키텍처를 규정한다. 소프트웨어 컴포넌트(20)는 소프트웨어 컴포넌트(20)를 위한 속성들 및 인터페이스들에 관한 규칙을 포함하는 소프트웨어 컴포넌트 규칙(200)에 의하여 규정된다.
도4 내지 도6을 참조하면, 본 발명에 의한 N-계층 아키텍처를 위한 시스템 디자인을 위한 방법은 일반적으로 전술한 바와 같은 규칙이나 방법들을 이용하여 생성된 아키텍처를 사용하는 소프트웨어 기반의 어플리케이션 생성을 위한 라이프사이클 접근방식이 유효하도록 하는 원리, 규칙 및 방법을 구현하는 것을 염두에 둔다. 규칙들의 집합은 예를 들어(한정이 아님) 소프트웨어 컴포넌트(20)의 생성 및 속성에 관한 규칙(210); 계층(30) 및 목록(700) 안에서 소프트웨어 컴포넌트(20)를 부가, 변경, 위치 파악, 추출, 및 삭제를 포함하는 소프트웨어 컴포넌트(20)의 유지에 관한 규칙(310); 및 계층(30) 및 어플리케이션을 생성하기 위한 규칙(410)에 의하여 디자인되고 구현된다.
어떤 구현에 있어서는, 템플릿이나 실제 소프트웨어 컴포넌트(20)로 사용할 수 있는 소프트웨어 컴포넌트(20)의 기본 집합을 갖추는 것이 바람직하다. 따라서,이러한 경우에는 소프트웨어 디자이너는 구조화된 프레임워크(40)의 기본 집합을 규정하고 생성할 것이다.
본 발명은 컴퓨터로 구현되는 프로세스 및 이러한 프로세스를 실행시키기 위한 장치로서 실시될 수 있다. 본 발명은 플로피 디스켓, CD-ROM, 하드 드라이브, 또는 기타 컴퓨터로 읽을 수 있는 컴퓨터 프로그램 코드를 기록한 기록매체 등과 같이 다양한 측면에서 구현될 수 있다. 이때, 프로그램 코드는 예를 들어 저장매체에 저장되어 있다가 컴퓨터에 로드되고 실행되거나 전선, 광섬유, 전자기파, 또는 캐리어 웨이브와 같은 전송 매체를 통해 컴퓨터 데이터나 기타 다른 신호로서 전송된다. 컴퓨터 프로그램 코드가 컴퓨터에 의해 로드되고 실행되는 경우, 컴퓨터는 본 발명을 실시하는 장치가 된다. 범용 마이크로 프로세서에 구현된 경우, 컴퓨터 프로그램 코드 세크멘트는 원하는 프로세스를 수행하기 위한 특정 논리 회로를 생성하도록 배치된다.
따라서, 소프트웨어 어플리케이션을 만들기 위한 소프트웨어 컴포넌트를 생성하는데 필요한 소프트웨어 아키텍처를 디자인하는 시스템은 예를 들어(한정이 아닌), 키보드, 마우스, 드래그 앤 드롭 인터페이스, 텍스트 편집기, 그래픽 편집기, OLE 인터페이스 또는 이들의 조합 수단에 의하여 소프트웨어 컴포넌트, 계층, 및 어셈블리 규칙을 생성하기 위한 소프트웨어 컴포넌트 규칙들의 집합을 규정하기 위한 여러 가지 수단을 포함한다. 이러한 수단은 수동 프로세스, 휴리스틱 프로세스, 자동화된 프로세스 등이나 전문가 시스템으로 구동되는 또는 구현된 디자인, 신경망 등과 같은 상기 수단들의 조합 수단을 더 포함할 수 있다.
당업자들은 아래의 청구항에 기재된 본 발명의 원리나 범위를 벗어나지 않는 범위에서 위의 설명 내용들의 세부사항, 배열 등을 용이하게 변형할 수 있음을 이해해야 한다.

Claims (34)

1) 소프트웨어 컴포넌트를 생성하기 위한 소프트웨어 컴포넌트 규칙의 집합을 규정하는 단계;
2) 확장가능한 계층의 집합을 생성하기 위하여 계층 규칙의 집합을 규정하는 단계로서, 상기 계층 규칙은
가) 상기 소프트웨어 컴포넌트 규칙을 사용하여 생성된 적어도 하나의 소프트웨어 컴포넌트가 상기 계층 규칙의 집합을 가지고 생성된 적어도 하나의 계층과 결합하거나 분리되도록 하는 결합(association)규칙의 집합;
나) 계층과 결합된 소프트웨어 컴포넌트를 위한 구조화된 컨텍스트를 제공하기 위한 계층 프레임워크 규칙의 집합; 및
다) 계층의 특정 동작들의 집합을 제공하기 위해서 상기 계층 프레임워크 규칙들에 의해 정의되는 프레임워크 안에서 인터페이스를 논리적으로 분류하기 위해서 제공되는 패키지 규칙의 집합
을 포함하는 단계; 및
3) 각 계층이 적어도 하나의 다른 계층과 결합되도록 하는 결합(association)규칙 및 각 계층이 적어도 하나의 다른 계층과 연결되도록 하는 연결(linkage)규칙을 포함하는 어셈블리 규칙의 집합을 규정하는 단계
로 구성되는 것을 특징으로 하는 N-계층의 소프트웨어 어플리케이션을 작성함에 있어서 소프트웨어 컴포넌트를 활용하기 위한 소프트웨어 아키텍처 디자인 방법.
제 1 항에 있어서,
상기 소프트웨어 컴포넌트를 생성하기 위해 소프트웨어 컴포넌트 규칙의 집합을 규정하는 단계는
1) 각 소프트웨어 컴포넌트의 인터페이스를 명시하는 규칙을 규정하는 단계 및
2) 각 소프트웨어 컴포넌트의 동작을 명시하는 규칙을 규정하는 단계를 더 포함하는 것을 특징으로 하는 N-계층의 소프트웨어 어플리케이션을 작성함에 있어서 소프트웨어 컴포넌트를 활용하기 위한 소프트웨어 아키텍처 디자인 방법.
제 2 항에 있어서,
상기 동작을 명시하는 규칙을 규정하는 단계는
1) 소프트웨어 컴포넌트의 기능이 구체적으로 구현된 방법을 어떻게 캡슐화할 것인지에 관한 규칙을 규정하는 단계; 및
2) 소프트웨어 컴포넌트가 잘 정의된 인터페이스를 통해 다른 소프트웨어 컴포넌트를 사용할 수 있도록 각 소프트웨어 컴포넌트에 대하여 이진 레벨에서 재사용이 가능한 상기 잘 정의된 인터페이스를 생성하는 것에 관한 규칙을 규정하는 단계
를 더 포함하는 것을 특징으로 하는 N-계층의 소프트웨어 어플리케이션을 작성함에 있어서 소프트웨어 컴포넌트를 활용하기 위한 소프트웨어 아키텍처 디자인 방법.
제 1 항에 있어서,
소프트웨어 컴포넌트 목록으로부터 소프트웨어 컴포넌트를 검색하거나 소프트웨어 목록에 소프트웨어 컴포넌트를 선택적으로 위치시키기 위한 라이브러리 규칙을 규정하는 단계를 더 포함하는 것을 특징으로 하는 N-계층의 소프트웨어 어플리케이션을 작성함에 있어서 소프트웨어 컴포넌트를 활용하기 위한 소프트웨어 아키텍처 디자인 방법.
제 1 항에 있어서,
상기 소프트웨어 컴포넌트 규칙은 소프트웨어 컴포넌트 또는 계층 내부에서 목록에 없는(off the shelf) 컴포넌트를 지원하기 위한 규칙 및 상기 목록에 소프트웨어 컴포넌트를 추가하기 위한 규칙을 더 포함하는 것을 특징으로 하는 N-계층의 소프트웨어 어플리케이션을 작성함에 있어서 소프트웨어 컴포넌트를 활용하기 위한 소프트웨어 아키텍처 디자인 방법.
제 1 항에 있어서,
소프트웨어 컴포넌트를 확장할 수 있도록 하는 추가, 변형, 및 삭제 규칙을 포함하는 적어도 하나의 소프트웨어 변형 규칙을 규정하는 단계를 더 포함하는 것을 특징으로 하는 N-계층의 소프트웨어 어플리케이션을 작성함에 있어서 소프트웨어 컴포넌트를 활용하기 위한 소프트웨어 아키텍처 디자인 방법.
제 1 항에 있어서,
상기 소프트웨어 컴포넌트 규칙은 소프트웨어 컴포넌트 기능(function) 포인트를 지시하는 규칙을 더 포함하는 것을 특징으로 하는 N-계층의 소프트웨어 어플리케이션을 작성함에 있어서 소프트웨어 컴포넌트를 활용하기 위한 소프트웨어 아키텍처 디자인 방법.
제 7 항에 있어서,
상기 소프트웨어 컴포넌트 기능(function) 포인트를 지시하는 규칙은 상기 소프트웨어 컴포넌트가 속하는 특정 계층에 의하여 요구되는 소프트웨어 컴포넌트 인터페이스의 구현을 허용하는 규칙들을 더 포함하는 것을 특징으로 하는 N-계층의 소프트웨어 어플리케이션을 작성함에 있어서 소프트웨어 컴포넌트를 활용하기 위한 소프트웨어 아키텍처 디자인 방법.
제 1 항에 있어서,
상기 확장 가능한 계층들의 집합을 생성하기 위한 규칙들의 집합을 규정하는 단계는,
1) 상기 계층과 결합된 소프트웨어 컴포넌트의 특징을 변경하도록 허용하는 것에 관한 규칙을 규정하는 단계;
2) 한 프레임워크가 다른 프레임워크들과 어떠한 의존관계에 있는지 규정하는 것을 허용하는 규칙을 규정하는 단계;
3) 속성들과 인터페이스들을 어떻게 분류할 것인지에 관한 규칙을 규정하는 단계;
4) 어떤 인터페이스들을 사용할 것인가에 관한 규칙들을 규정하는 단계; 및
5) 소프트웨어 컴포넌트의 동작이 어디에 속하는 지 명시하는 규칙을 규정하는 단계
를 더 포함하는 것을 특징으로 하는 N-계층의 소프트웨어 어플리케이션을 작성함에 있어서 소프트웨어 컴포넌트를 활용하기 위한 소프트웨어 아키텍처 디자인 방법.
제 1 항에 있어서,
상기 프레임워크 규칙은 프레임워크를 위한 적어도 하나의 패키지를 명시하는 규칙들을 더 포함하고, 상기 패키지는 특정 동작을 제공하는 인터페이스 집합을 더 포함하는 것을 특징으로 하는 N-계층의 소프트웨어 어플리케이션을 작성함에 있어서 소프트웨어 컴포넌트를 활용하기 위한 소프트웨어 아키텍처 디자인 방법.
제 1 항에 있어서,
1) 상기 계층에서 소프트웨어 컴포넌트들을 위한 기본 컴포넌트를 포함하는 기본 디자인 구조를 규정하는 단계; 및
2) 상기 계층에 속하는 것으로 분류된 소프트웨어 컴포넌트를 위한 표준 인터페이스들의 집합을 규정하는 단계
를 더 포함하는 것을 특징으로 하는 N-계층의 소프트웨어 어플리케이션을 작성함에 있어서 소프트웨어 컴포넌트를 활용하기 위한 소프트웨어 아키텍처 디자인 방법.
제 1 항에 있어서,
상기 어셈블리 규칙들의 집합을 규정하는 단계는,
1) 단독으로 실행 가능한 프로그램을 제공하는 적어도 하나의 계층을 어셈블하고 컴파일하도록 허용하는 규칙을 규정하는 단계; 및
2) 소프트웨어 컴포넌트들을 결합하는 것을 허용하고, 동작중이며(on the fly), 새롭고 유일한 어플리케이션을 만들기 위하여 어셈블된 어플리케이션을 실시간으로 호출하는 규칙을 규정하는 단계
를 더 포함하는 것을 특징으로 하는 N-계층의 소프트웨어 어플리케이션을 작성함에 있어서 소프트웨어 컴포넌트를 활용하기 위한 소프트웨어 아키텍처 디자인 방법.
제 1 항에 있어서,
상기 소프트웨어 컴포넌트 규칙들은 각 소프트웨어 컴포넌트가 각기 자신의 스레드 및 시간 프레임 안에서 비동기적으로 실행되도록 하고, 종속 컴포넌트들에게 그 상태를 알리거나 상기 종속 컴포넌트들에게 소정의 이벤트가 발생하는 경우에는 이를 알리도록 하는 규칙들을 명시하는 것을 특징으로 하는 N-계층의 소프트웨어 어플리케이션을 작성함에 있어서 소프트웨어 컴포넌트를 활용하기 위한 소프트웨어 아키텍처 디자인 방법.
제 1 항에 있어서,
소프트웨어 컴포넌트가 하나 또는 둘 이상의 소프트웨어 컴포넌트들로 구성되는 모델을 트래버스(traverse)하는 것을 허용하거나 하나 또는 둘 이상의 기술들을 정의하는 것을 허용하는 규칙들을 규정하는 단계를 더 포함하는 것을 특징으로 하는 N-계층의 소프트웨어 어플리케이션을 작성함에 있어서 소프트웨어 컴포넌트를 활용하기 위한 소프트웨어 아키텍처 디자인 방법.
제 14 항에 있어서,
상기 모델을 트래버스(traverse)할 때에는 소정의 인터페이스를 사용하는 것을 특징으로 하는 N-계층의 소프트웨어 어플리케이션을 작성함에 있어서 소프트웨어 컴포넌트를 활용하기 위한 소프트웨어 아키텍처 디자인 방법.
제 1 항에 있어서,
결합들에 접근하는 것을 용이하게 하기 위하여 템플릿 반복자(iterator) 클래스를 구현하는 것에 관한 규칙을 더 포함하는 것을 특징으로 하는 N-계층의 소프트웨어 어플리케이션을 작성함에 있어서 소프트웨어 컴포넌트를 활용하기 위한 소프트웨어 아키텍처 디자인 방법.
제 16 항에 있어서,
상기 템플릿 반복자 클래스는 어떠한 소프트웨어 컴포넌트의 결합(association)에도 기초할 수 있으며, 상기 결합에 있는 모든 소프트웨어 컴포넌트들 또는 특정 형식의 소프트웨어 컴포넌트들만 반복하는 데 사용될 수 있는 것을 특징으로 하는 N-계층의 소프트웨어 어플리케이션을 작성함에 있어서 소프트웨어 컴포넌트를 활용하기 위한 소프트웨어 아키텍처 디자인 방법.
1) 복수의 계층을 포함하는 소프트웨어 컴포넌트 아키텍처를 제공하는 단계로서 상기 각 계층은 적어도 하나의 상기 소프트웨어 컴포넌트와 결합될 수 있고, 상기 각 계층은 각 계층을 위한 소정의 인터페이스들의 집합을 더 포함하며, 상기 인터페이스들은 상기 계층 내부에서 수행할 수 있는 기능들의 집합을 정의하는 것을 특징으로 하는 단계; 및
2) 상기 복수의 계층들 중 선택된 특정 계층을 위하여 명시된 소정의 인터페이스 집합을 제공하는 단계로서, 상기 적어도 하나의 소프트웨어 컴포넌트는 상기 복수의 계층들 중 선택된 하나의 계층을 위해 명시된 인터페이스들의 집합을 제공하는 것을 특징으로 하는 단계
로 구성되는 것을 특징으로 하는 N-계층 소프트웨어 어플리케이션에서 사용하기 위하여 소정의 구조를 가지는 소프트웨어 컴포넌트를 생성하기 위한 방법.
제 18 항에 있어서,
상기 소프트웨어 컴포넌트는 상기 제 18 항의 방법에 따라서 디자인된 소프트웨어 컴포넌트를 도입한 어떤 시스템에 의해서도 재사용할 수 있는 것을 특징으로 하는 N-계층 소프트웨어 어플리케이션에서 사용하기 위하여 소정의 구조를 가지는 소프트웨어 컴포넌트를 생성하기 위한 방법.
제 18 항에 있어서,
1) 계층 내부에 소프트웨어 컴포넌트를 위한 구조화된 컨텍스트를 제공하기 위한 계층 프레임워크 규칙들의 집합을 규정하는 단계; 및
2) 계층에 특정 동작들의 집합을 제공하기 위하여 상기 계층 프레임워크 규칙에 의하여 정의된 프레임워크 내부에서 인터페이스들을 논리적으로 분류하기 위해 제공되는 패키지 규칙들의 집합을 규정하는 단계를
더 포함하는 것을 특징으로 하는N-계층 소프트웨어 어플리케이션에서 사용하기 위하여 소정의 구조를 가지는 소프트웨어 컴포넌트를 생성하기 위한 방법.
제 20 항에 있어서,
상기 프레임워크 규칙은
1) 하나의 프레임워크의 다른 프레임워크들에 대한 의존관계를 명시하는 규칙을 규정하는 단계;
2) 속성들(properties)과 인터페이스들을 어떻게 분류할 것인지를 규정하는 단계;
3) 어떤 인터페이스들이 사용되는 지를 분류하는 단계; 및
4) 소프트웨어 컴포넌트의 동작이 어디에 포함되는 지를 규정하는 단계를
더 포함하는 것을 특징으로 하는 N-계층 소프트웨어 어플리케이션에서 사용하기 위하여 소정의 구조를 가지는 소프트웨어 컴포넌트를 생성하기 위한 방법.
제 21 항에 있어서,
패키지를 정의하는 규칙들을 규정하는 단계를 더 포함하는 방법으로서, 상기 패키지는 메시징이나 커넥팅(connecting)과 같은 특정 동작을 어떻게 제공할 것인지 명시하기 위하여 하나의 프레임워크 내부에서 인터페이스들을 하위 집합으로 분류하는 것을 특징으로 하는 N-계층 소프트웨어 어플리케이션에서 사용하기 위하여 소정의 구조를 가지는 소프트웨어 컴포넌트를 생성하기 위한 방법.
1) 어플리케이션 요구조건(requirement)의 집합을 결정하는 단계;
2) 상기 어플리케이션 요구조건을 만족시키기 위해 필요한 모델들과 소프트웨어 컴포넌트의 목록을 결정하는 단계;
3) 소프트웨어 컴포넌트들을 확장 가능한 계층들로 분류하는 단계;
4) 각 계층에 있는 소프트웨어 컴포넌트가 컴포넌트 목록에서 이용할 수 있는 지를 결정하는 단계;
5) 상기 목록에서 발견된 소프트웨어 컴포넌트가 필요한 것이면 사용하는 단계;
6) 상기 요구조건을 유지하면서 상기 목록의 소프트웨어 컴포넌트들을 재구성하는 단계;
7) 상기 목록에 존재하는 소프트웨어 컴포넌트가 상기 요구조건을 만족시키지 못하거나 요구조건을 만족시키기 위하여 재구성될 수 없는 경우에는 새로운 소프트웨어 컴포넌트를 부가하는 단계;
8) 적어도 하나의 소프트웨어 컴포넌트를 각각의 필요한 계층과 결합하는 단계; 및
9) 필요한 각각의 계층들과의 사이에서 연결관계를 정의하고 구현함으로써 어플리케이션을 생성하는 단계를
포함하는 것을 특징으로 하는 소프트웨어 컴포넌트들과 계층들을 포함하는 N-계층 아키텍처 시스템디자인 방법.
제 23 항에 있어서,
1) 각각의 새로운 소프트웨어 컴포넌트를 테스트하는 단계;
2) 각각의 재구성된 소프트웨어 컴포넌트를 테스트하는 단계;
3) 상기 각각의 새로운 소프트웨어 컴포넌트가 상기 소프트웨어 목록의 일부가 되기에 적당한 지를 평가하는 단계;
4) 상기 각각의 재구성된 소프트웨어 컴포넌트가 상기 소프트웨어 목록의 일부가 되기에 적당한 지를 평가하는 단계; 및
5) 상기 새로운 또는 재구성된 소프트웨어 컴포넌트가 재사용될 가능성이 있는 경우에는 상기 소프트웨어 목록에 추가하는 단계를
포함하는 것을 특징으로 하는 소프트웨어 컴포넌트들과 계층들을 포함하는 N-계층 아키텍처 시스템디자인 방법.
제 23 항에 있어서,
상기 새로운 또는 재구성된 소프트웨어 컴포넌트를 현재의 아키텍처에 맞도록 수정하거나 상기 새로운 또는 재구성된 소프트웨어 컴포넌트를 수용하기 위하여 하나 또는 그 이상의 계층들을 추가함으로써 아키텍처를 확장하는 것을 특징으로 하는 소프트웨어 컴포넌트들과 계층들을 포함하는 N-계층 아키텍처 시스템디자인 방법.
제 23 항에 있어서,
상기 소프트웨어 컴포넌트들이 현재의 어플리케이션에서만 사용될 수 있는 특이한 것이면 상기 목록에 포함시키지 않는 것을 특징으로 하는 소프트웨어 컴포넌트들과 계층들을 포함하는 N-계층 아키텍처 시스템디자인 방법.
제 24 항에 있어서,
상기 테스팅은 테스팅과 입증(validation)을 포함하는 것을 특징으로 하는 소프트웨어 컴포넌트들과 계층들을 포함하는 N-계층 아키텍처 시스템 디자인 방법.
제 23 항에 있어서,
현재 목록에 존재하는 소프트웨어 컴포넌트가 요구조건을 만족시키지 못하거나 상기 요구조건을 만족시키기 위하여 재구성될 수 없는 경우에 소프트웨어 컴포넌트를 부가하는 단계는,
1) 제3자(third party)로부터 목록에 없는 소프트웨어 컴포넌트를 입수하는 단계; 및
2) 상기 목록에 없는 소프트웨어 컴포넌트와 적어도 하나의 계층사이에 소정의 인터페이스를 제공하는 단계를
더 포함하는 것을 특징으로 하는 소프트웨어 컴포넌트들과 계층들을 포함하는 N-계층 아키텍처 시스템 디자인 방법.
1) 적어도 하나의 프로세싱 유닛;
2) 상기 프로세싱 유닛에 기능적으로 연결된 적어도 하나의 메모리;
3) 상기 적어도 하나의 프로세싱 유닛에서 실행 가능한 N-계층 디자인 소프트웨어;
4) 상기 메모리에 상주하면서 소프트웨어 컴포넌트를 생성하기 위한 소프트웨어 컴포넌트 규칙의 집합을 위한 스펙(specification), 계층을 생성하기 위한 계층 규칙 스펙, 및 어셈블리 규칙들의 집합의 스펙을 포함하는 소프트웨어 아키텍처 스펙;
5) 상기 프로세싱 유닛과 기능적으로 연결되어 상기 소프트웨어 아키텍처 스펙을 입력을 하기 위한 입력 장치;
6) 상기 프로세싱 유닛과 기능적으로 연결된 출력 장치; 및
7) 상기 프로세싱 유닛과 기능적으로 연결된 통신 통로를
포함하는 소프트웨어 어플리케이션을 위한 소프트웨어 컴포넌트를 생성하는데 사용하는 소프트웨어 아키텍처를 디자인하기 위한 시스템.
제 29 항에 있어서,
상기 통신 통로는 네트워크인 것을 특징으로 하는 소프트웨어 어플리케이션을 위한 소프트웨어 컴포넌트를 생성하는데 사용하는 소프트웨어 아키텍처를 디자인하기 위한 시스템.
제 30 항에 있어서,
상기 네트워크는 비동기식 통신, 동기식 통신, 지역 통신(local communications), 근거리 네트워크(local area network), 광역 네트워크(wide area network), 및 지역 버스 네트워크(local bus network)를 포함하는 것을 특징으로하는 소프트웨어 어플리케이션을 위한 소프트웨어 컴포넌트를 생성하는데 사용하는 소프트웨어 아키텍처를 디자인하기 위한 시스템.
1) 소프트웨어 컴포넌트를 생성하기 위한 소프트웨어 컴포넌트 규칙의 집합을 규정하는 수단;
2) 계층들을 형성하기 위한 계층 규칙들의 집합을 규정하기 위한 수단으로서, 상기 계층 규칙들은
가) 상기 계층 규칙의 집합에 의하여 생성된 각 계층이 상기 소프트웨어 컴포넌트 규칙을 가지고 생성한 적어도 하나의 소프트웨어 컴포넌트와 결합될 수 있도록 하는 결합 규칙의 집합;
나) 계층 내부의 소프트웨어 컴포넌트를 위한 구조화된 컨텍스트(context)를 제공하기 위한 계층 프레임워크 규칙의 집합; 및
다) 상기 계층의 구체적인 동작들의 집합을 제공하기 위해 상기 계층 프레임워크 규칙에 의해 정의된 프레임워크 내부에서 인터페이스들을 논리적으로 분류하도록 하는 패키지 규칙의 집합
을 포함하는 것을 특징으로 하는 계층 규칙들의 집합을 규정하기 위한 수단; 및
3) 각 계층이 적어도 하나의 소프트웨어 컴포넌트와 결합되도록 하는 결합(association)규칙 및 각 계층이 적어도 하나의 다른 계층과 연결되도록 하는 연결(linkage)규칙을 포함하는 어셈블리 규칙들의 집합을 규정하는 수단
을 포함하는 것을 특징으로 하는 소프트웨어 어플리케이션을 작성하기 위하여 소프트웨어 컴포넌트를 생성하는데 사용하기 위한 소프트웨어 아키텍처를 디자인하기 위한 시스템.
적어도 하나의 프로세싱 유닛; 상기 프로세싱 유닛과 기능적으로 연결된 적어도 하나의 메모리; 상기 프로세싱 유닛 내부에서 실행 가능한 N-계층 디자인 소프트웨어; 소프트웨어 아키텍처 스펙을 입력하도록 하기 위하여 상기 프로세싱 유닛과 기능적으로 통신을 하는 입력 장치; 상기 프로세싱 유닛과 기능적으로 통신하는 출력 장치; 및 상기 프로세싱 유닛과 기능적으로 연결된 통신 통로를 포함하는 시스템에 있어서,
1) N-계층 디자인 소프트웨어를 상기 메모리에 로딩하는 단계;
2) N-계층 디자인 소프트웨어를 실행하는 단계;
3) 소프트웨어 컴포넌트를 생성하기 위하여 상기 메모리에 소프트웨어 컴포넌트 규칙을 입력하는 단계;
4) 상기 메모리에 계층을 형성하기 위하여 계층 규칙들의 집합을 입력하는 단계로서, 상기 계층 규칙들은
가) 상기 계층 규칙의 집합을 가지고 생성된 각 계층이 상기 소프트웨어 컴포넌트 규칙을 가지고 생성한 적어도 하나의 소프트웨어 컴포넌트와 결합될 수 있도록 하는 결합 규칙의 집합;
나) 계층 내부에 소프트웨어 컴포넌트를 위한 구조화된컨텍스트(context)를 제공하기 위한 계층 프레임워크 규칙의 집합; 및
다) 상기 계층의 구체적인 동작들의 집합을 제공하기 위해 상기 계층 프레임워크 규칙에 의해 정의된 프레임워크 내부에서 인터페이스들을 논리적으로 분류하도록 하는 패키지 규칙의 집합
을 포함하는 것을 특징으로 하는 계층 규칙의 집합을 입력하는 단계;
5) 각 계층이 적어도 하나의 소프트웨어 컴포넌트와 결합되도록 하는 결합(association)규칙 및 각 계층이 적어도 하나의 다른 계층과 연결되도록 하는 연결(linkage)규칙을 포함하는 어셈블리 규칙의 집합을 상기 메모리에 입력하는 단계; 및
6) N-계층 소프트웨어 아키텍처를 생성하기 위하여 상기 N-계층 디자인 소프트웨어를 이용하여 상기 소프트웨어 컴포넌트 규칙, 상기 계층 규칙, 및 상기 어셈블리 규칙을 프로세싱하는 단계
를 포함하는 N-계층 소프트웨어 아키텍처를 정의 및 구현하기 위한 방법.
1) 소프트웨어 컴포넌트 규칙을 이용하여 소프트웨어 컴포넌트를 생성하기 위한 제1 복수개의 이진값;
2) 계층 규칙을 이용하여 계층을 생성하기 위한 제2 복수개의 이진값; 및
3) 계층 및 소프트웨어 컴포넌트들로부터 소프트웨어 어플리케이션을 어셈블하기 위한 제3 복수개의 이진값
을 포함하는 저장 매체 안에 저장된 N-계층 소프트웨어 아키텍처.
KR1020027008439A 1999-12-29 2000-12-28 소프트웨어 컴포넌트를 생성하기 위한 n-계층 소프트웨어아키텍처 디자인 방법 및 시스템 KR20020091071A (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,155 US6854107B2 (en) 1999-12-29 2000-12-22 Method of and system for designing an N-tier software architecture for use in generating software components
US09/746,155 2000-12-22
PCT/US2000/035425 WO2001048625A1 (en) 1999-12-29 2000-12-28 Method of and system for designing an n-tier software architecture for use in generating software components

Publications (1)

Publication Number Publication Date
KR20020091071A true KR20020091071A (ko) 2002-12-05

Family

ID=26869680

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027008439A KR20020091071A (ko) 1999-12-29 2000-12-28 소프트웨어 컴포넌트를 생성하기 위한 n-계층 소프트웨어아키텍처 디자인 방법 및 시스템

Country Status (8)

Country Link
US (1) US6854107B2 (ko)
EP (1) EP1247192A1 (ko)
JP (1) JP2003518694A (ko)
KR (1) KR20020091071A (ko)
AU (1) AU776966B2 (ko)
CA (1) CA2393606A1 (ko)
GB (1) GB2373899A (ko)
WO (1) WO2001048625A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100395498B1 (ko) * 2000-12-30 2003-08-25 한국전자통신연구원 개방형 영역 아키텍쳐 모델러 장치 및 그 방법
WO2004099896A2 (en) * 2003-05-12 2004-11-18 An Mo Jeong Method and system of developing a software with utilizing extented metadata of component under component-based development environment
US7721252B2 (en) 2004-12-21 2010-05-18 Electronics And Telecommunications Research Institute Apparatus and method for product-line architecture description and verification
KR101311515B1 (ko) * 2006-12-15 2013-09-25 주식회사 케이티 소프트웨어 컴포넌트의 재사용성 증진 장치 및 방법

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6993743B2 (en) * 2000-06-03 2006-01-31 Sun Microsystems, Inc. Method and apparatus for developing enterprise applications using design patterns
US20030041311A1 (en) * 2001-08-27 2003-02-27 International Business Machines Corporation Topological multi-tier business application composer
US20030188034A1 (en) * 2002-03-22 2003-10-02 Goldberg Robert N. Method and apparatus for enabling retargetable application architectures
US20030182361A1 (en) * 2002-03-22 2003-09-25 Sun Microsystems, Inc. Business-model agnostic service deployment management service
US20040133873A1 (en) * 2002-07-11 2004-07-08 Noah Dan System and method for building custom application on an application server
US7234132B2 (en) 2002-08-29 2007-06-19 International Business Machines Corporation Application integration model for dynamic software component assembly within an application at runtime
US7367018B2 (en) * 2002-10-25 2008-04-29 Aspen Technology, Inc. System and method for organizing and sharing of process plant design and operations data
WO2004086222A2 (en) * 2003-03-26 2004-10-07 Bizplus Limited Development of software systems
US20100145752A1 (en) * 2004-05-11 2010-06-10 Davis James E Adaptable workflow and communications system
US20050120329A1 (en) * 2003-12-01 2005-06-02 Gafter Neal M. Method and apparatus for supporting typesafe software design
CA2463006A1 (en) * 2004-01-27 2005-07-27 Wrapped Apps Corporation On demand provisioning of web applications
US7624379B2 (en) * 2005-01-12 2009-11-24 Advanced Testing Technologies, Inc. Test program set obsolescence mitigation through software and automatic test equipment system processes
US7448023B2 (en) * 2005-02-25 2008-11-04 Microsoft Corporation Method and system for verifying rule compliance of an application object
US7886269B2 (en) 2005-04-29 2011-02-08 Microsoft Corporation XML application framework
US8418132B2 (en) 2005-04-29 2013-04-09 Microsoft Corporation Application description language
US8132148B2 (en) 2005-04-29 2012-03-06 Microsoft Corporation XML application framework
US8275793B2 (en) * 2005-04-29 2012-09-25 Microsoft Corporation Transaction transforms
US7474310B2 (en) 2005-08-12 2009-01-06 Microsoft Corporation Object association in a computer generated drawing environment
US8380553B2 (en) 2005-12-30 2013-02-19 Sap Ag Architectural design for plan-driven procurement application software
US8316344B2 (en) 2005-12-30 2012-11-20 Sap Ag Software model deployment units
US8396731B2 (en) 2005-12-30 2013-03-12 Sap Ag Architectural design for service procurement application software
US8402426B2 (en) 2005-12-30 2013-03-19 Sap Ag Architectural design for make to stock application software
US8448137B2 (en) * 2005-12-30 2013-05-21 Sap Ag Software model integration scenarios
US8522194B2 (en) 2005-12-30 2013-08-27 Sap Ag Software modeling
US8060865B2 (en) * 2006-01-12 2011-11-15 Microsoft Corporation Build-time enforcement of architectural partitioning in computer application
US8442850B2 (en) 2006-03-30 2013-05-14 Sap Ag Providing accounting software application as enterprise services
KR100864014B1 (ko) 2006-12-07 2008-10-16 한국전자통신연구원 컴포넌트 스타트 순서에 따른 sca기반의 파형어플리케이션의 스타트 방법
KR100871563B1 (ko) 2007-02-14 2008-12-02 삼성전자주식회사 컴포넌트 기반의 소프트웨어 개발을 위한 장치 및 방법
US7958494B2 (en) * 2007-04-13 2011-06-07 International Business Machines Corporation Rapid on-boarding of a software factory
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
US8464205B2 (en) * 2007-04-13 2013-06-11 International Business Machines Corporation Life cycle of a work packet in a software factory
US8327318B2 (en) * 2007-04-13 2012-12-04 International Business Machines Corporation Software factory health monitoring
US20080256390A1 (en) * 2007-04-13 2008-10-16 Chaar Jarir K Project Induction in a Software Factory
US8296719B2 (en) * 2007-04-13 2012-10-23 International Business Machines Corporation Software factory readiness review
US8141040B2 (en) * 2007-04-13 2012-03-20 International Business Machines Corporation Assembling work packets within 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
US8141030B2 (en) * 2007-08-07 2012-03-20 International Business Machines Corporation Dynamic routing and load balancing packet distribution with a software factory
US8332807B2 (en) * 2007-08-10 2012-12-11 International Business Machines Corporation Waste determinants identification and elimination process model within a software factory operating environment
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
US8539437B2 (en) * 2007-08-30 2013-09-17 International Business Machines Corporation Security process model for tasks within a software factory
US20090100406A1 (en) * 2007-10-16 2009-04-16 Microsoft Corporation Software factory specification and execution model
US8185827B2 (en) * 2007-10-26 2012-05-22 International Business Machines Corporation Role tailored portal solution integrating near real-time metrics, business logic, online collaboration, and web 2.0 content
US8200522B2 (en) * 2007-10-26 2012-06-12 International Business Machines Corporation Repeatable and standardized approach for deployment of a portable SOA infrastructure within a client environment
US8296718B2 (en) * 2007-10-31 2012-10-23 International Business Machines Corporation SOA software components that endure from prototyping to production
US20090125880A1 (en) * 2007-11-12 2009-05-14 Microsoft Corporation Polymorphic software architecture
US8447657B2 (en) 2007-12-31 2013-05-21 Sap Ag Architectural design for service procurement application software
KR101470319B1 (ko) 2008-02-15 2014-12-08 삼성전자주식회사 컴포넌트 모델 기반의 가상 소프트웨어 플랫폼을 생성하는방법, 이를 이용하여 소프트웨어 플랫폼 아키텍처를검증하는 방법 및 그 장치
US9218166B2 (en) * 2008-02-20 2015-12-22 Embarcadero Technologies, Inc. Development system with improved methodology for creation and reuse of software assets
US8595044B2 (en) * 2008-05-29 2013-11-26 International Business Machines Corporation Determining competence levels of teams working within a software
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
US8171415B2 (en) * 2008-06-11 2012-05-01 International Business Machines Corporation Outage management portal leveraging back-end resources to create a role and user tailored front-end interface for coordinating outage responses
US8452629B2 (en) 2008-07-15 2013-05-28 International Business Machines Corporation Work packet enabled active project schedule maintenance
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
US20100023920A1 (en) * 2008-07-22 2010-01-28 International Business Machines Corporation Intelligent job artifact set analyzer, optimizer and re-constructor
US8140367B2 (en) 2008-07-22 2012-03-20 International Business Machines Corporation Open marketplace for distributed service arbitrage with integrated risk management
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
US8448129B2 (en) * 2008-07-31 2013-05-21 International Business Machines Corporation Work packet delegation in a software factory
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
US8401928B2 (en) * 2008-09-18 2013-03-19 Sap Ag Providing supplier relationship management software application as enterprise services
US8402436B2 (en) * 2008-10-27 2013-03-19 International Business Machines Corporation Cooperative unwrapping across intervening wrappers
US8401908B2 (en) 2008-12-03 2013-03-19 Sap Ag Architectural design for make-to-specification application software
US8671035B2 (en) 2008-12-11 2014-03-11 Sap Ag Providing payroll software application as enterprise services
US10157369B2 (en) 2009-02-05 2018-12-18 International Business Machines Corporation Role tailored dashboards and scorecards in a portal solution that integrates retrieved metrics across an enterprise
US8407073B2 (en) 2010-08-25 2013-03-26 International Business Machines Corporation Scheduling resources from a multi-skill multi-level human resource pool
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
US9015106B2 (en) 2012-04-30 2015-04-21 Dell Products, Lp Cloud based master data management system and method therefor
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
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
ITTO20130133A1 (it) * 2013-02-18 2014-08-19 Roberto Remmert Metodo per la realizzazione di specificazioni di sistemi software, in particolare di tipo oltp-app, e relativo dispositivo
US9448773B2 (en) * 2013-04-03 2016-09-20 Salesforce.Com, Inc. Systems and methods for implementing a uniform application user interface across a multi-tenant environment
US9922210B2 (en) * 2013-04-29 2018-03-20 Sri International Componentized provisioning
US9183074B2 (en) 2013-06-21 2015-11-10 Dell Products, Lp Integration process management console with error resolution interface
US9646064B2 (en) * 2014-12-10 2017-05-09 Salesforce.Com, Inc. Template based software container
US10001974B1 (en) * 2015-12-03 2018-06-19 State Farm Mutual Automobile Insurance Company Technical building block
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
US10606586B2 (en) * 2017-08-01 2020-03-31 Accenture Global Solutions Limited Application architecture generation
US10558454B2 (en) 2018-06-04 2020-02-11 Palantir Technologies Inc. Constraint-based upgrade and deployment
US10521220B1 (en) 2018-12-18 2019-12-31 Palantir Technologies Inc. Systems and methods for coordinating the deployment of components to defined user groups
US11379188B2 (en) * 2019-11-15 2022-07-05 Foresight Data Systems LLC Plugin-oriented functional programming system configured with software components

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4870564A (en) * 1984-06-04 1989-09-26 Ge Fanuc Automation North America, Inc. Distributed input/output system
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
US4916617A (en) * 1988-01-20 1990-04-10 Delaware Capital Formation Controller for well installations
US5587197A (en) * 1990-02-07 1996-12-24 Fuji Oil Company, Ltd. Process for production of water-soluble vegetable fiber
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
CA2168762C (en) * 1993-08-03 2000-06-27 Paul Butterworth Flexible multi-platform partitioning for computer applications
US5504672A (en) * 1993-09-10 1996-04-02 Hardiman; Ted L. Industrial process controller and method of process control
US5822587A (en) * 1995-10-20 1998-10-13 Design Intelligence, Inc. Method and system for implementing software objects
US5815717A (en) * 1995-10-27 1998-09-29 Authorgenics, Inc. Application program and documentation generator system and method
US5881230A (en) 1996-06-24 1999-03-09 Microsoft Corporation Method and system for remote automation of object oriented applications
US5848246A (en) * 1996-07-01 1998-12-08 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server session manager in an interprise computing framework system
US5889942A (en) 1996-12-18 1999-03-30 Orenshteyn; Alexander S. Secured system for accessing application services from a remote station
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
US5857197A (en) 1997-03-20 1999-01-05 Thought Inc. System and method for accessing data stores as objects
US6061517A (en) * 1997-03-31 2000-05-09 International Business Machines Corporation Multi-tier debugging
US6266666B1 (en) * 1997-09-08 2001-07-24 Sybase, Inc. Component transaction server for developing and deploying transaction- intensive business applications
US6134594A (en) * 1997-10-28 2000-10-17 Microsoft Corporation Multi-user, multiple tier distributed application architecture with single-user access control of middle tier objects
US5889520A (en) * 1997-11-13 1999-03-30 International Business Machines Corporation Topological view of a multi-tier network
US6263498B1 (en) * 1998-12-03 2001-07-17 International Business Machines Corporation Method and apparatus for enabling server side distributed object modification
US6182756B1 (en) 1999-02-10 2001-02-06 Intevep, S.A. Method and apparatus for optimizing production from a gas lift well
US6446113B1 (en) * 1999-07-19 2002-09-03 Groove Networks, Inc. Method and apparatus for activity-based collaboration by a computer system equipped with a dynamics manager

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100395498B1 (ko) * 2000-12-30 2003-08-25 한국전자통신연구원 개방형 영역 아키텍쳐 모델러 장치 및 그 방법
WO2004099896A2 (en) * 2003-05-12 2004-11-18 An Mo Jeong Method and system of developing a software with utilizing extented metadata of component under component-based development environment
WO2004099896A3 (en) * 2003-05-12 2005-02-17 An Mo Jeong Method and system of developing a software with utilizing extented metadata of component under component-based development environment
US7721252B2 (en) 2004-12-21 2010-05-18 Electronics And Telecommunications Research Institute Apparatus and method for product-line architecture description and verification
KR101311515B1 (ko) * 2006-12-15 2013-09-25 주식회사 케이티 소프트웨어 컴포넌트의 재사용성 증진 장치 및 방법

Also Published As

Publication number Publication date
AU2602801A (en) 2001-07-09
EP1247192A1 (en) 2002-10-09
AU776966B2 (en) 2004-09-30
GB0214981D0 (en) 2002-08-07
CA2393606A1 (en) 2001-07-05
GB2373899A (en) 2002-10-02
US6854107B2 (en) 2005-02-08
WO2001048625A1 (en) 2001-07-05
JP2003518694A (ja) 2003-06-10
US20020095650A1 (en) 2002-07-18

Similar Documents

Publication Publication Date Title
KR20020091071A (ko) 소프트웨어 컴포넌트를 생성하기 위한 n-계층 소프트웨어아키텍처 디자인 방법 및 시스템
AU777835B2 (en) Method and system and article of manufacture for an N-tier software component architecture application
US6931621B2 (en) Method and system and article of manufacture for an N-tier software component architecture oilfield model
CA2171570C (en) Compiler with generic front end and dynamically loadable back ends
US5715432A (en) Method and system for developing network analysis and modeling with graphical objects
US5542070A (en) Method for rapid development of software systems
US6308314B1 (en) Mechanism and method for flexible coupling of processes in an object oriented framework
US20060074737A1 (en) Interactive composition of workflow activities
US20020083415A1 (en) Frame component container
US20020199034A1 (en) System and method for visual application development without programming
US20040015822A1 (en) Method and apparatus for dynamic assembly and verification of software components into flexible applications
EP0601848A2 (en) System and method for knowledge based design
US4964063A (en) System and method for frame and unit-like symbolic access to knowledge represented by conceptual structures
CN102736919A (zh) 描述及开发动态行为应用系统的方法与系统
KR20030044916A (ko) 모듈러 컴퓨터 시스템 및 관련 프로세스
US6195791B1 (en) Object mechanism and method for coupling together processes to define a desired processing environment in an object oriented framework
US8375355B2 (en) Conversion of a class oriented data flow program to a structure oriented data flow program
Dubois et al. Elaborating, structuring and expressing formal requirements of composite systems
US7290241B1 (en) Method and system for managing behavior of algorithms
Ahamed Review and analysis of the issues of unified modeling language for visualizing, specifying, constructing and documenting the artifacts of a software-intensive system
Ling et al. Using two object‐oriented modelling techniques: specifying thejust‐in‐time kanban system
Shah A framework for the prototype-based software development methodologies
Seban An overview of object-oriented design and C++
Chauveau Working with C++
Fors Development of a Modular API for the CAD-System CATIA V5

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