본문 바로가기
프로그래밍/설계공부

제 2 장. StarUML 아키텍쳐

by 건우아빠유리남편 2009. 7. 23.
반응형

제 2 장. StarUML 아키텍쳐

이 장에서는 StarUML의 기본 아키텍처에 대해서 설명한다. 플랫폼 아키텍처와 Add-In의 구성 그리고 외부 API(External API)가 어떻게 구성되어 있는지에 대해 주로 기술한다.

플랫폼 아키텍쳐

StarUML은 단순히 정의된 기능들만을 제공하는 것이 아니라 새로운 기능들을 얼마든지 추가할 수 있는 확장 가능한 소프트웨어 모델링 플랫폼이다. 다음 그림은 StarUML의 아키텍처 구성을 보여준다. 하늘색은 플랫폼(Platform)을 의미하고 초록색은 확장 가능한 부분(Extensible part)을 의미한다. 확장 가능한 부분은 사용자 혹은 제3자에 의해 개발된 후 플랫폼에 추가되어 상호 연동될 수 있다.

  • Approach :  접근법(Approach)은 프로젝트의 모델과 다이어그램의 기본 구성(organization)을 정의할 수 있도록 한다. 접근법에 대한 자세한 내용은 "Chapter 5. Writing Approaches"를 참고하라.
  • UML Profile & Notation Extension : UML 프로파일(Profile)은 UML의 확장 메커니즘을 통해 소프트웨어 모델에 대한 표현력을 확장할 수 있도록 한다. UML 프로파일에 대한 자세한 내용은 "Chapter 7. Writing UML Profiles"를 참고하라.
  • Model Framework : 모델 프레임워크(Model Framework)는 소프트웨어 모델을 재사용 가능하도록 하여 다른 소프트웨어 모델을 정의할 때 함께 사용될 수 있도록 한다. 모델 프레임워크에 대한 자세한 내용은 "Chapter 6. Writing Frameworks"를 참고하라.
  • Add-In COM Object : Add-In COM 개체는 StarUML에 새로운 기능(Functionality)을 추가할 수 있도록 한다. Add-In COM 개체에 관한 자세한 내용은 "Chapter 9. Writing Add-In COM Object"를 참고하라.
  • Menu Extension : StarUML 애플리케이션의 메뉴(메인 메뉴 및 팝업 메뉴)를 사용자가 원하는 대로 추가할 수 있도록 한다. 메뉴 확장에 관한 자세한 내용은 "Chapter 8. Extending Menu"를 참고하라.
  • Option Extension : StarUML의 옵션 항목들을 사용자가 원하는 대로 추가할 수 있도록 한다. 옵션 확장에 관한 자세한 내용은 "Chapter 9. Writing Add-in COM Object"를 참고하라.
  • Event Subscription : StarUML에서 발생되는 다양한 이벤트를 수신할 수 있도록 한다. 이벤트 수신에 관한 자세한 내용은 "Chapter 9. Writing Add-in COM Object"를 참고하라.
  • External API : StarUML에서 외부에 공개된 API로 다양한 기능과 정보에 대한 접근을 허용한다. 외부 API에 관한 자세한 내용은 이 개발자 가이드 전반에 걸쳐 설명되며 특히 StarUML™ 프로그램 설치 시 예제의 하나로 제공되는 'StarUML Application Model.uml'을 참고할 수 있다. 이에 대해서는 "Appendix A. Plastic Application Model" 부분을 참고하라.

모듈 구성

모듈은 StarUML을 확장하여 새로운 기능과 특징들을 추가할 수 있도록 해주는 소프트웨어 패키지이다. 모듈은 StarUML의 여러 가지 확장 메커니즘으로 구성되는데 다음의 그림과 같이 여러 개의 접근법, 여러 개의 모델 프레임워크, 여러 개의 UML 프로파일 그리고 여러 개의 스크립트(Script)들과 메뉴 확장(Menu Extension), 옵션 확장(Option Extension), 도움말(Help) 및 Add-In COM Object가 사용되어 하나의 패키지로 구성될 수 있다.

모듈의 응용

모듈은 다양한 구성 요소들을 포함할 수 있기 때문에 여러 가지의 목적에 맞도록 개발될 수 있다. 특정 프로세스나 언어 그리고 플랫폼을 지원하는 것에서부터 타 도구와의 연동과 기능의 확장 등으로 고려될 수 있다.

  • 특정 프로세스 지원 : UML Components, RUP, Catalysis, XP, ...
  • 특정 프로그래밍 언어 지원 : C/C++, Python, C#, Visual Basic, Java, Perl, Object Pascal, ...
  • 특정 도구와의 연동 : Visual SourceSafe, CVS, MS Word, Eclipse, Visual Studio.NET, ...
  • 기타 기능의 확장 : Traceability Manager, Design Patterns Support, Rule Checking, ...
  • 자신(혹은 특정 회사)만의 환경 구축 등

모듈의 각 구성 요소

  • Approach : 접근법은 프로젝트 시작 시에 적용되어 초기 모델 구조를 결정 짓는다. 예를 들면 이것은 특정 프로세스를 위한 모듈을 만드는 경우 프로세스의 각 단계가 산출하게 되는 모델을 관리하기 위한 구조를 미리 설정하는 용도로 사용될 수 있다.
  • Model Framework : 모델 프레임워크는 특정 언어나 플랫폼에 관계된 모듈을 개발하는 경우에 클래스 라이브러리(Class Library) 혹은 애플리케이션 프레임워크(Application Framework)를 제작할 수 있고, 기타 기본 서비스(e.g. Event, Transaction, Security, Directory, ...)들을 모델로 개발하여 추가할 수도 있을 것이다.
  • UML Profile : UML 프로파일은 특정 프로세스나 언어, 프레임워크 등 다양한 용도에서 UML의 표기법을 확장해야 하거나 추가적인 프로퍼티를 사용해야 하는 경우에 정의될 수 있다. 이것은 모듈에서 매우 광범위한 역할을 수행할 수 있다.
  • Menu Extension : Add-In은 대부분 새로운 기능들을 추가하는데 각각의 기능들을 사용자가 선택하여 실행할 수 있도록 StarUML의 메인 메뉴 혹은 팝업 메뉴를 확장하는데 사용된다. Add-In 개발에서 거의 필수적인 부분이다.
  • Option Extension : Add-In 자체에 다양한 선택 사항들을 둘 수 있는데, 이것을 활용하면 StarUML의 옵션 다이얼로그를 그대로 사용하면서 옵션 항목을 설정할 수 있도록 한다.
  • Add-In COM Object : Visual Basic, Delphi, Visual C++, C# 등과 같은 언어 및 도구들을 활용하여 확장할 기능을 구현할 수 있다. 주로 추가적인 GUI가 필요하거나 복잡한 기능을 구현할 때에 COM 개체로 구현할 수 있고 간단한 것은 Script로 해결할 수 있다. 이것은 주로 외부 API를 다루어 프로그래밍하게 된다.
  • Script : 간단한 기능의 확장은 Scripting Language(JScript, VBScript, Python, ...)를 사용하여 작성할 수 있다. 이것은 주로 외부 API를 다루어 프로그래밍하게 된다.
  • Help : Add-In에 관한 도움말을 HTML로 작성하여 원격주소 또는 로컬경로로 등록할 수 있다.

Open API 개요

StarUML은 방대한 Open API(Application Programming Interface)를 제공한다. StarUML외부 API는 외부에서 프로그램 내부의 기능을 호출하여 사용할 수 있도록 하는 규격화된 프로그래밍 인터페이스이다.

StarUML 외부 API는 아래 그림과 같이 Modeling Elements, Non_Modeling Elements 그리고 Application Objects의 크게 3 분류로 나눌 수 있다. Modeling Elements 부분은 모델링 요소에 대한 접근에 관한 인터페이스를 제공하고, Non_Modeling Elements는 모델링 요소 이외의 여러 가지 요소들 및 MOF(Meta-Object Facility)에 관련된 인터페이스를 제공한다. Application Objects에는 애플리케이션 자체를 다루는 다양한 인터페이스들을 제공하고 있다.

Application Objects 부분

Application Objects 부분에는 애플리케이션 자체를 다루는 인터페이스들을 포함하고 있다. 이 부분에 포함되어 있는 인터페이스로는 기본 인터페이스인 IPlasticApplication, 요소들의 선택을 다루는 ISelectionManager, 요소들을 생성하는 IUMLFactory, 프로젝트를 관리하기 위한 IProjectManager 및 이벤트, GUI에 관한 인터페이스 등이 있다.

Modeling Elements 부분

Modeling Elements 부분에는 모델링 요소들을 다루기 위한 인터페이스들을 포함하고 있다. 이 부분은 다시 여러 개의 부분으로 나눌 수 있다. Core Elements 부분은 모델 및 뷰 그리고 다이어그램 요소들의 최상위 인터페이스가 정의되어 있으며, ExtCore Elements 부분은 확장 가능한 모델 요소들에 관련된 인터페이스가 위치하고 있고 UML Model Elements 부분은 이것에 기반하여 UML 모델 요소들이 정의되어 있다. 그리고 ViewCore Elements 부분은 뷰 요소들의 기본 컴포넌트들에 대한 인터페이스들이 위치하고 있고, UML View Elements 부분에는 역시 이것에 기반하여 UML 뷰 요소들이 정의되어 있다.

Non_Modeling Elements 부분

Non_Modeling Elements 부분에는 모델링 요소들을 제외한 기타 요소들에 대한 인터페이스들을 포함하고 있다. 이 부분은 다시 여러 개의 부분으로 나뉘는데 UML 확장 메커니즘에 관련된 요소들에 대한 인터페이스를 포함하는 Extension Elements 부분과 StarUML의 저장 파일들을 다루는 Document Elements 부분 그리고 메타-수준의 요소들을 다루기 위한 Metamodeling Elements 부분으로 구성된다.

반응형

'프로그래밍 > 설계공부' 카테고리의 다른 글

제 4 장. Open API 사용하기  (0) 2009.07.23
제 3 장. HelloWord 예제  (0) 2009.07.23
1장 StarUML 소개  (0) 2009.07.23
도서관리프로그램 UseCase - Diagram  (0) 2009.07.16
설계 기초  (0) 2009.02.10

댓글