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

제 6 장. 프레임워크 사용하기

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

제 6 장. 프레임워크 사용하기

모델 프레임워크의 기본 개념

모델 프레임워크(Model Framework)는 애플리케이션 프레임워크(Application Framework)나 클래스 라이브러리(Class Library) 등을 StarUML에서 사용할 수 있도록 구성한 것을 말한다. 예를 들어 JFC(Java Foundation Classes), MFC(Microsoft Foundatation Classes), 델파이 VCL(Visual Component Library) 등이 모델 프레임워크의 대상이 될 수 있다. 그리고 이 장에서 설명하겠지만 사용자가 필요한 모델 프레임워크를 정의하여 사용할 수 있다. 모델 프레임워크를 사용하는 가장 큰 이점은 공통적이고 기반이 되는 모델링 요소 및 구조의 공유와 재사용성 이다.

StarUML애플리케이션의 [File]-[Import]-[Framework] 메뉴를 실행했을 때 보여지는 "Import Framework 다이얼로그"(아래 그림)는 시스템에 설치된 모델 프레임워크들의 목록을 보여주는데, 목록에서 항목을 선택하고 실행하면 해당 모델 프레임워크에서 미리 정의하고 있는 모델링 구조가 지정한 경로에 자동으로 포함되게 된다. 모델 프레임워크는 여러 개의 유닛(Unit) 파일들로 구성되며,  StarUML에 포함된 모델 프레임워크는 실제로 유닛과 동일하게 취급된다.

StarUML외부 API를 사용하여 위와 같이 시스템에 설치된 모델 프레임워크들의 목록을 얻거나 특정 모델 프레임워크를 프로젝트에 포함시킬 수 있다. 이에 대해서는 뒤에서 자세히 설명할 것이다.

새로운 모델 프레임워크 작성하기

모델 프레임워크는 여러 개의 유닛 파일(.unt)들과 하나의 모델 프레임워크 정의 문서 파일(.frw)로 구성되며, 선택 요소로 아이콘 파일(.ico)이 있을 수 있다. 새로운 모델 프레임워크를 정의하려면 다음과 같은 절차를 따른다.

  1. 모델 프레임워크의 모델 정보를 담고 있는 유닛 파일들을 생성한다. ("Chapter 4. Using Open API"를 참고)
  2. 모델 프레임워크를 정의하는 모델 프레임워크 문서 파일(.frw)을 작성한다.
  3. 작성한 유닛파일과 모델 프레임워크 문서 파일 그리고 아이콘 파일을 StarUML™ 모듈 디렉토리 하부에 복사한다.

모델 프레임워크 문서 파일의 기본 구조

모델 프레임워크 문서 파일은 XML 포맷으로 정의되어 있으며 확장자는 .frw(Framework File)이다. 모델 프레임워크에 대한 내용은 FRAMEWORK 태그 내에 기술되며 구문이나 내용에 오류가 없도록 해야 한다.

<?xml version="1.0" encoding="..." ?>
<FRAMEWORK version="...">
    <HEADER>
        ...
    </HEADER>
    <BODY>
        ...
    </BODY>
</FRAMEWORK>
  • encoding 속성 : XML 문서의 인코딩 속성 값을 지정한다 (e.g. UTF-8, EUC-KR). 이 속성의 값에 대해서는 XML 관련 자료를 참조하기 바란다.
  • version 속성 (FRAMEWORK 요소) : 모델 프레임워크 문서 포맷의 버전이다. (e.g  1.0)
  • HEADER 요소 : Header Contents 섹션 참조
  • BODY 요소 : Body Contents 섹션 참조

Header Contents

Header 부분에는 모델 프레임워크의 이름과 설명 등 모델 프레임워크에 대한 개괄적인 정보를 기술한다.

<HEADER>
    <NAME>...</NAME>
    <DISPLAYNAME>...</DISPLAYNAME>
    <DESCRIPTION>...</DESCRIPTION>
</HEADER>
  • Name 요소: 모델 프레임워크의 명칭을 기록한다. 이것은 다른 모델 프레임워크들과 구분하는 ID 역할을 수행한다.
  • DISPLAYNAME 요소: "모델 프레임워크 가져오기 다이얼로그" 등에서 사용자에게 보여지는 이름을 기록한다.
  • DESCRIPTION 요소 : 모델 프레임워크에 대한 설명을 기술한다.

Body Contents

Body 부분에서는 모델 프레임워크에 대한 실제 정보가 기술되는데, Body 부분은 크게 IMPORTPROFILES, FRAMEWORKMODELS 두 부분으로 구성된다.

<BODY>
    <IMPORTPROFILES>
        <PROFILE>...</PROFILE>
        ...
    </IMPORTPROFILES>
    <FRAMEWORKMODELS>
        <UNIT>...</UNIT>
        ...
    </FRAMEWORKMODELS>
</BODY>
  • IMPORTPROFILES 요소: 해당 모델 프레임워크가 포함될 때 기본적으로 로드(Load)되어야 하는 UML 프로파일들을 나열한다.
  • PROFILE 요소: 로드 되어야 하는 UML 프로파일 각각의 이름을 하나씩 지정한다.
  • FRAMEWORKMODELS 요소: 해당 모델 프레임워크를 구성하고 있는 유닛 파일들을 나열한다.
  • UNIT 요소: 유닛 파일의 이름을 하나씩 지정한다. 유닛 파일의 이름만을 기록하며 경로명은 포함하지 않는다. 해당 모델 프레임워크를 구성하는 유닛 파일들은 반드시 모델 프레임워크 문서 파일과 동일한 경로에 있어야 한다.

노트: "UNIT 요소"에는 최상위 유닛에 해당하는 유닛 파일들만 지정한다. "Chapter 4. 프로젝트 다루기"에서 보았듯이 어떤 유닛이 하위 유닛들을 가지는 경우, 해당 상위 유닛이 로드 될 때 하위 유닛들은 자동으로 같이 로드 된다.

모델 프레임워크 문서 예제

다음은 Java 2 Standard Edition (J2SE) 1.3 모델 프레임워크를 정의하고 있는 모델 프레임워크 문서를 예로 보인 것이다.

<?xml version="1.0" encoding="UTF-8" ?>
<FRAMEWORK version="1.0">
    <HEADER>
        <NAME>J2SE1.3</NAME>
        <DISPLAYNAME>Java 2 Standard 1.3</DISPLAYNAME>
        <DESCRIPTION>Java 2 Standard Edition (J2SE) 1.3 Framework.</DESCRIPTION>
    </HEADER>
    <BODY>
        <FRAMEWORKMODELS>
            <UNIT>J2SE13 (java).pux</UNIT>
            <UNIT>J2SE13 (javax).pux</UNIT>
            <UNIT>J2SE13 (org).pux</UNIT> 
        </FRAMEWORKMODELS>
    </BODY>
</FRAMEWORK>

새로운 모델 프레임워크 등록하기

작성된 프레임워크를 프로그램에서 인식하려면 프레임워크와 관련 파일들을 StarUML™ 모듈 디렉토리(<install-dir>\modules) 하부 디렉토리로 옮겨야 한다. StarUML™은 프로그램 초기화 시에 모듈 디렉토리 하부를 검색하여 모든 프레임워크 파일들을 읽어들인 후 프로그램에 자동 등록한다. 만약 프레임워크 파일이 문법에 맞지 않게 잘 못 작성되어 있거나, 확장자가 .frw가 아닌 경우에는 프레임워크를 정상적으로 읽어 들이지 않고 무시하게 될 것이다.
프레임워크가 모듈 디렉토리 하부에 존재하면 프로그램에 등록되는 데에는 문제가 없다. 그러나, 가급적이면 다른 모듈들과의 혼동을 피하기 위하여 별도의 서브디렉토리를 만들어 사용하는 것을 권고한다.

노트: 프레임워크의 아이콘을 등록하려면, 프레임워크과 동일한 이름의 아이콘 파일(.ico)을 만들어 프레임워크가 있는 디렉토리에 두면 된다. 프레임워크 아이콘은 [Import Framework] 대화상자에서 프레임워크의 이름과 함께 프레임워크 목록 리스트에 표시된다. 만약 프레임워크의 이름과 동일한 이름의 아이콘 파일이 없으면 기본 아이콘으로 프레임워크를 등록할 것이다.

노트: 프레임워크를 더 이상 사용하지 않으려면 StarUML™ 모듈 디렉토리(<install-dir>\modules) 하부에서 삭제하면 된다.

모델 프레임워크 관련 메소드 사용하기

시스템에 설치된 모델 프레임워크 정보 읽기

외부 API를 통해 시스템에 설치된 모델 프레임워크들의 목록을 확인할 수 있다. 이와 관련된 외부 API는  IProjectManager 인터페이스의 GetAvailableFrameworkCount 메소드와 GetAvailableFrameworkAt 메소드이다. 아래의 코드는 이 두 메소드의 형식을 보여준다.

IProjectManager.GetAvailableFrameworkAt(Index: Integer): String
IProjectManager.GetAvailableFrameworkCount(): Integer

모델 프레임워크 불러오기

IProjectManager.ImportFramework 메소드를 사용하여 시스템에 등록되어있는 특정 모델 프레임워크를 현재 프로젝트에 포함시킬 수 있다. 이 메소드의 형식은 아래와 같은데, OwnerPackage 인자는 해당 모델 프레임워크가 포함될 상위 모델 요소를 지정하며 IUMLPackage 타입 모델 요소여야 한다. 그리고 FrameworkName 인자는 불러올 모델 프레임워크의 이름으로, 모델 프레임워크의 정확한 이름(ID)을 문자열 값으로 지정하면 된다.

IProjectManager.ImportFramework(OwnerPackage: IUMLPackage; FrameworkName: String)

다음 예제는 IProjectManager.ImportFramework 메소드를 사용하여 "J2SE1.3" 모델 프레임워크를 불러오는 것을 보여주고 있다.

var app = new ActiveXObject("StarUML.StarUMLApplication");
var prjMgr = app.ProjectManager;

var owner = ... // Get reference to IUMLPackage type element.
prjMgr.ImportFramework(owner, "J2SE1.3");
반응형

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

제 8 장. 메뉴 확장하기  (0) 2009.07.23
제 7 장. UML 프로파일 사용하기  (0) 2009.07.23
제 5 장. 접근법 사용하기  (0) 2009.07.23
제 4 장. Open API 사용하기  (0) 2009.07.23
제 3 장. HelloWord 예제  (0) 2009.07.23

댓글