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

제 11 장. 템플릿 작성하기

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

제 11 장. 템플릿 작성하기

이 장에서는 Microsoft Word, Microsoft Excel, Microsoft PowerPoint, Code 등의 산출물을 생성하기 위한 사용되는 템플릿의 구성 요소에 대해서 소개하고, 사용자가 직접 자신의 템플릿을 정의하는 방법을 예제를 통해서 설명한다. 그리고 작성한 템플릿을 등록하거나 다른 컴퓨터로 배포하는 방법을 설명한다.

템플릿 구성 요소

StarUML Generator의 템플릿은 일반적으로 크게 두가지 영역으로 구분되어진다. 한 부분은 문서가 보여지는 스타일을 지정하는 영역이며, 다른 한 부분은 UML 모델로부터 각 요소를 어떤 식으로 가져오는지 결정하는 커맨드 영역이다. 커맨드 영역은 MS Office 계열 템플릿(Word, Excel, PowerPoint)은 MS Office의 메모를 이용하고, Code 템플릿은 텍스트를 이용한다. 커맨드 영역에는 UML 모델에 대한 열거, 비교, 계산, 그리고 화면표시와 같은 명령어들이 사용된다. 각각의 템플릿에서 사용되는 명령어는 조금씩 다르지만 다음과 같은 형태의 공통적인 명령어들이 사용되어진다.

  • REPEAT ~ ENDREPEAT
  • IF ~ ENDIF
  • DISPLAY
  • SCRIPT

REPEAT 명령어

REPEAT 명령어는 인자를 만족하는 모델 요소를 반복해서 열거하는 명령어이다. 또한 REPEAT 명령어부터 ENDREPEAT 명령어까지의 영역에 존재하는 스타일을 요소의 개수만큼 반복하여 생성되는 문서에 출력한다. REPEAT 명령어는 다음과 4개의 인자를 가진다.

인자 설명 비고
Pathname 반복할 요소가 존재하는 상위 경로 Optional
FilterType 현재 경로 아래에 존재하는 요소 중에 반복할 요소의 타입 Optional
CollectionName 현재 요소에서 반복할 요소를 포함하는 콜렉션 이름 Optional
Condition 반복할 요소가 만족해야 하는 조건식 Optional

첫번째 인자는 반복해서 가져올 UML 모델의 시작 기준점을 의미한다. 시작 기준점은 경로명의 형태를 취하고 있다. 경로명은 StarUML에서 해당 요소를 선택하면 하단 상태바에 "(요소타입) 경로명" 형태로 표시되므로 이 값을 참조한다. 경로는 절대경로와 상대경로형태로 표시될수 있다. 절대경로는 경로명이 "::"로 시작한다. 예를 들어 경로명이 "::Use case model::PackageB"이라면 프로젝트밑에 Use case model밑에 PackageB 라는 요소를 지칭하고, "Use case model::PackageB"는 현재 경로 밑에 있는 Use case model 밑에 있는 PackageB라는 요소를 지칭한다. 또한 경로명의 앞에는 "{R}"이라는 문자가 부가적으로 첨가될수 있다. "{R}"이 첨가된 경우에는 경로명 아래에 존재하는 모든 서브 경로에 존재하는 요소들을 반복해서 열거하고, "{R}"이 없을 경우에는 경로 바로밑에 존재하는 요소에 대해서만 반복해서 열거한다. 첫번째 인자가 생략되면 현재 경로의 아래에 존재하는 요소를 반복한다.

두번째 인자는 첫번째 경로명 아래에 존재하는 요소중에 반복할 요소의 타입을 의미한다. 만약 "UMLClass"가 인자로 사용되면, 경로명 아래에 존재하는 모든 UMLClass 타입의 요소들을 반복하여 열거한다. 만약 인자가 생략되면 모든 타입의 요소들에 대해서 반복을 수행한다.

세번째 인자는 현재 선택된 요소 중에서 반복할 요소를 포함하는 콜랙션 이름이다. 첫번째 인자가 "::Use case Model::PackageB"이고, 두번째 인자가 "UMLClass"이고, 세번째 인자가 "OwnedElements"이면, "::Use case Model::PackageB" 경로 바로 아래에 존재하는 모든 "UMLClass" 타입 요소의 "OwnedElements" 콜랙션 내부의 요소를 반복한다. 만약 세번째 인자가 생략된다면 첫번째, 두번째 인자에 의해서만 반복을 수행한다.

네번째 인자는 반복하는 요소가 만족해야할 조건식을 의미한다. 조건식은 JScript로 표현된다. 인자값이 current().StereotypeName == 'boundary'라면, 선택된 요소의 스테레오타입이 "boundary"인 요소에 대해서만 반복을 수행한다.  인자는 기본적으로 참의 값을 가진다. 따라서 인자값이 생략될 경우에는 선택된 모든 요소를 반복한다.

참고

  • current()는 Generator에서 사용하는 Built-in function이다. 자세한 사항은 템플릿 구성 요소 > Built-in Functions를 참조한다.

WORD 템플릿에서 명령어의 변형

  • REPEAT 명령어에 대해서 ENDREPTR 명령어가 대응될 수 있다. REPEAT 명령어와 ENDREPTR 명령어는 특정 테이블의 행을 반복할 경우에 사용된다. 만약 클래스의 목록을 표로 작성할 경우에는 REPEAT 명령어는 반복할 행의 첫번째 셀에 위치시키고, ENDREPTR 명령어는 반드시 반복할 행의 맨 마지막 셀에 위치시킨다. 그러면 해당 요소를 열거하면 해당 요소만큼의 테이블 행이 생성된다.

IF 명령어

IF 명령어는 인자의 조건을 만족할 경우에 대해서 ENDIF 명령어까지의 영역에 존재하는 스타일을 표시한다. IF 명령어는 다음의 인자를 가진다. 인자값은 JScript로 표현된다.

인자 설명 비고
Condition 만족해야 하는 조건식 Mandatory

참고

  • IF 명령어는 Excel과 PowerPoint 템플릿에서는 처리되지 않는다. (차후에 구현 예정)

WORD 템플릿에서 명령어의 변형

  • IF 명령어에 대해서도 비슷한 변형이 존재한다. 특정 테이블의 행이 조건이 만족할 경우에 보이고, 그렇지 않을 경우에는 보이지 않도록 하기 위해서 IF와 ENDIFTR 명령어가 존재한다. 인자 설정방식은 IF 명령어와 동일하며, 해당 행의 첫번째 셀에 IF 명령어가 위치해야 하고, 해당 행의 마지막 셀에 ENDIFTR 명령어가 위치해야 한다.

DISPLAY 명령어

DISPLAY 명령어는 인자를 만족하는 모델 요소의 값 또는 그림을 생성되는 문서에 출력한다. DISPLAY 명령어는 다음과 같은 인자들을 가진다.

인자 설명 비고
Pathname 선택할 요소의 경로 Optional
Expression 출력할 값에 대한 표현식 Optional

첫번째 인자는 출력할 값이 참조할 경로명이다. 경로명은 절대경로와 상대경로의 형태로 표현된다. 만약 생략된다면 현재 경로를 선택한다.

두번째 인자는 출력할 값의 표현식이다. 만약 첫번째 인자가 "::Use case Model::PackageB"이고 두번째 인자가 current().Documentation이라면, 생성되는 문서에 Use case Model 아래의 PackageB라는 이름의 요소의 Documentation 속성의 값을 출력한다.

WORD 템플릿에서 명령어의 변형

  • WORD 템플릿에서 DISPLAY 명령어 인자의 사용 방식이 약간 차이가 있다. 첫번째 인자에 의해서 선택된 경로의 요소가 UMLDiagram 타입이고 두번째 인자가 생략되면 생성되는 문서에 선택된 다이어그램의 이미지를 삽입한다. 그러나 첫번째 인자가 UMLDiagram 타입을 요소를 선택하고 있더라도, 두번째 인자의 표현식이 값을 가지고 있으면 그 값을 출력한다.
  • WORD 템플릿에서는 DISPLAY 명령어가 세번째 인자를 가진다. 세번째 인자는 현재 출력된 값(문자열)을 색인으로 설정할지 여부를 나타낸다. WORD 문서 생성 후반부 시점에 색인 목록이 자동으로 생성되어질 수 있게 한다. 인자값을 "I"로 설정하면 색인으로 생성하고, 생략되면 색인으로 생성하지 않는다.

POWERPOINT 템플릿에서 명령어의 변형

  • POWERPOINT 템플릿에서 DISPLAY 명령어의 이름이 DISPLAY-TEXT와 DISPLAY-IMAGE로 구분하여 사용한다. DISPLAY-TEXT는 텍스트 출력을 위해서 명시적으로 사용한다. 인자는 DISPLAY와 동일하다. 그리고 다이어그램을 출력하기 위해서는 DISPLAY-IMAGE 명령어를 사용한다. 첫번째 인자에 의해서 UMLDiagram 타입 요소를 선택하고, 두번째 인자는 생략되어야 한다.

SCRIPT 명령어

SCRIPT 명령어는 공통 명령어 이외에 명령어를 사용자가 수행하고자할때 사용하는 명령어이다. 인자부분을 JScript 형태의 스크립트 문장들로 기술한다. 다른 명령어 인자의 식과 달리 문장들로 구성되므로 여러개의 JScript 문장을 사용할 수 있다.

Built-In 함수

템플릿의 명령어에서 사용될 수 있는 모든 Built-In 함수는 다음과 같다.

시그너쳐 설명 대상 템플릿
StarUMLApp(): IStarUMLApplication StarUML Application COM 객체를 반환한다. WORD,EXCEL,
POWERPOINT
StarUMLProject(): IUMLProject StarUML Application에서 최상위 프로젝트의 COM 객체를 반환한다. TEXT
MSWord(): WordApplication Word Application의 COM 객체를 반환한다. WORD
MSExcel(): ExcelApplication Excel Application의 COM 객체를 반환한다. EXCEL
MSPPT(): PowerpointApplication Powerpoint Application의 COM 객체를 반환한다. POWERPOINT
findByFullpath(Path): IElement 인자로 받은 전체 경로명에 존재하는 모델 요소를 찾아서 반환한다. WORD,EXCEL,
POWERPOINT,TEXT
findByLocalpath(RootElem, Path): IElement 인자로 받은 RootElem 모델 요소를 기준으로 Path 상대 경로에 존재하는 요소를 찾아서 반환한다. WORD,EXCEL,
POWERPOINT,TEXT
itemCount(RootElem, CollectionName): int RootElem 모델 요소의 CollectionName을 만족하는 Collection내의 객체 개수를 반환하는 함수이다. WORD,EXCEL,
POWERPOINT,TEXT
item(RootElem, CollectionName, Index): IElement RootElem 모델 요소의 CollectionName을 만족하는 Collection내에서 Index 위치에 존재하는 객체를 반환하는 함수이다. WORD,EXCEL,
POWERPOINT,TEXT
attr(Elem, AttrName): Value Elem 모델 요소에서 AttrName과 일치하는 Attribute 또는 Reference의 값을 반환하는 함수이다. WORD,EXCEL,
POWERPOINT,TEXT
current(): IElement 명령어에 의해서 현재 선택된 모델 요소를 반환한다. WORD,EXCEL,
POWERPOINT,TEXT
pos(): int 명령어에 의해서 현재 선택된 모델 요소가 상위 요소의 몇 번째 자식 요소인지 위치 정보를 반환한다. WORD,EXCEL,
POWERPOINT
createFile(path): TextStream 인자로 준 경로명을 가지는 파일을 생성하여 TextStream 객체를 반환한다. TEXT
deleteFile(path) 인자로 준 경로명을 가지는 파일을 삭제한다. TEXT
createFolder(path): Folder 인자로 준 경로명을 가지는 폴더를 생성하여 Folder 객체를 반환한다. TEXT
deleteFolder (path) 인자로 준 경로명을 가지는 폴더를 삭제한다. TEXT
fileExists(path): Boolean 인자로 준 경로명의 파일이 존재하는지 여부를 반환한다. TEXT
folderExists(path): Boolean 인자로 준 경로명의 폴더가 존재하는지 여부를 반환한다. TEXT
fileBegin(path) 인자로 준 경로명의 파일을 생성하고, fileEnd 함수가 나타나기 전까지의 모든 출력을 현재 생성된 파일에 출력한다. TEXT
fileEnd(path) 앞의 fileBegin 함수의 호출과 항상 대응하여 호출되며, 현재 파일로 출력되는 것을 멈추기 위해서 사용한다. TEXT
getTarget(path): String 현재 StarUML Generator™ UI에서 설정한 출력 경로명을 반환한다. TEXT

Text 기반 템플릿 작성하기

텍스트 템플릿 작성을 위해서 사전에 다음과 같은 절차를 수행한다.

  1. 텍스트 템플릿 생성용 샘플 문서(template-text.zip)를 StarUML 공식 싸이트(www.staruml.com)의 템플릿 다운로드로부터 다운 받는다.
  2. staruml-generator\templates 폴더 밑에 template-text라는 이름의 폴더를 생성해서 다운 받은 파일의 압축을 푼다.
  3. StarUML을 실행한다.
  4. [Tools] -> [StarUML Generator...] 메뉴를 클릭한다.
  5. [Select templates for generator] 페이지에서 "Default Code Template" 템플릿을 선택한다.
  6. [Clone Template]  버튼을 클릭하고 템플릿의 이름과 템플릿이 저장될 경로를 지정하고, [OK] 버튼을 클릭한다.
  7. [List of templates] 에서 새로 생성한 템플릿을 선택하고, [Open Template] 버튼을 클릭하면 편집할 새로운 텍스트 템플릿이 열려진다.
  8. 열려진 화면에서 다음의 규칙에 따라서 명령어를 작성하도록 한다.

템플릿 구성요소에서 설명한 명령어들은 각 명령어의 의미와 인자의 순서는 같지만 각 템플릿마다 명령어를 표현하는 방식이 다르다. 텍스트 템플릿은 명령어를 텍스트 문장내에서 <@ 와 @> 문자열 사이에 배치한다. 명령어의 이름은 <@ 문자열 바로 다음에 위치한다. 그리고 첫번째 인자는 명령어 이름 다음 한 칸의 공백 이후에 인자가 위치한다. 인자와 인자 사이의 구분은 세미콜론 ";'을 사용으로 한다. <@ ... @> 명령어 영역 바깥에 존재하는 문자열은 스타일로 취급되며, 생성시 문서에 그대로 출력된다.

"::Design Model" 경로 밑의 모든 하부 경로에 존재하는 UMLClass를 열거하는 경우를 REPEAT 명령어로 표현하면 다음과 같다.
To iterate "UMLClass" typed element existing in all sub path under "::Design Model" path, do as following.

<@REPEAT {R}::Design Model;UMLClass;;@>
...
<@ENDREPEAT@>

그리고 다음과 같이 REPEAT과 ENDREPEAT 명령어 사이에 DISPLAY 명령어를 위치시켜서, 반복하는 각 클래스의 이름과 설명을 출력하고, 자바 클래스 선언 형식으로 출력되도록 "class", "{", "//", "}"등의 문자열을 <@ ... @> 명령어 영역 바깥쪽의 원하는 위치에 배치한다.

<@REPEAT {R}::Design Model;UMLClass;;@>
class <@DISPLAY ;current().Name@> {
  // <@DISPLAY ;current().Documentation@>
}
<@ENDREPEAT@>

텍스트 템플릿에만 특수하게 DISPLAY 명령어와 비슷하지만 경로 인자를 가지지 않는 단축형 명령을 가지고 있다. 형태는 <@=출력값 표현식@> 형태이며, DISPLAY 명령어의 두번째 인자만을 사용하여 표현할 경우에 사용한다. 위의 템플릿을 <@= @>를 사용한 동등한 표현은 다음과 같다.

<@REPEAT {R}::Design Model;UMLClass;;@>
class <@=current().Name@> {
  // <@=current().Documentation@>
}
<@ENDREPEAT@>

IF와 ENDIF 명령어를 사용하면, 클래스에 대한 설명이 존재할 경우에 대해서만 자바 커맨트 부분이 출력되도록 할수 있다.

<@REPEAT {R}::Design Model;UMLClass;;@>
class <@DISPLAY ;current().Name@> {
<@IF current().Documentation != ""@>
  // <@DISPLAY ;current().Documentation@>
<@ENDIF@>
}
<@ENDREPEAT@>

명령어의 인자로 사용되는 식은 JScript 표현식 구문을 이용한다. 이때 식에서 Built-In 함수들이 사용된다. 만약 Built-In 이외의 함수를 사용하려면, SCRIPT 명령어를 이용하여 JScript 구문으로 새로운 함수를 정의하고, 다른 명령어의 인자식에서 사용한다.

<@SCRIPT
function myfunc(a, b) {
  ...
}
@>

<@DISPLAY ;myfunc(1, 2)@>

제공되는 명령어 이외의 특수한 처리를 위해서도 SCRIPT 명령어가 사용될 수 있다. 다음은 반복하는 클래스를 각각 다른 클래스 파일명으로 저장하기 위한 명령을 SCRIPT 명령과 Built-In 함수인 fileBegin, fileEnd로 구성한 예이다.

<@REPEAT {R}::Design Model;UMLClass;;@>

<@SCRIPT fileBegin(getTarget()+"\\"+current().Name+".java"); @>

class <@DISPLAY ;current().Name@> {
  // <@DISPLAY ;current().Documentation@>
}

<@SCRIPT fileEnd(); @>

<@ENDREPEAT@>

모든 명령어에 대한 편집을 완료하고 문서를 저장하면, 직접 작성한 템플릿을 이용하여 코드를 생성할 수 있다. 문서 생성에 대한 자세한 절차는 사용자 가이드 7장.Generating by template을 참조한다.

Word 템플릿 작성하기

WORD 템플릿 작성을 위해서 사전에 다음과 같은 절차를 수행한다.

  1. WORD 템플릿 생성용 샘플 문서(template-word.zip)를 StarUML 공식 싸이트(www.staruml.com)의 템플릿 다운로드로부터 다운 받는다.
  2. staruml-generator\templates 폴더 밑에 template-word라는 이름의 폴더를 생성해서 다운 받은 파일의 압축을 푼다.
  3. StarUML을 실행한다.
  4. [Tools] -> [StarUML Generator...] 메뉴를 클릭한다.
  5. [Select templates for generator] 페이지에서 "Default Word Template" 템플릿을 선택한다.
  6. [Clone Template]  버튼을 클릭하고 템플릿의 이름과 템플릿이 저장될 경로를 지정하고, [OK] 버튼을 클릭한다.
  7. [List of templates] 에서 새로 생성한 템플릿을 선택하고, [Open Template] 버튼을 클릭하면 복사한 워드 템플릿이 열려진다.
  8. 열려진 워드 화면에서 다음의 규칙에 따라서 명령어를 작성하도록 한다.

WORD 템플릿에서 명령어 영역은 메모를 사용하여 표현한다. 명령어 이름은 메모의 작성자 속성에 표시하고, 인자들은 메모의 내용 속성에 표시한다. 인자와 인자 사이의 구분은 세미콜론 ";'을 사용으로 한다. 메모 이외의 영역은 스타일 영역으로 취급되며, 생성시 문서에 그대로 출력된다.

"::Use case Model" 경로 아래의 모든 하부 경로에 존재하는 UMLUseCase를 열거하는 경우를 표현하려면, 우선 [REPEAT]과 [ENDREPEAT] 이름의 메모를 복사하여 원하는 위치에 붙인다. 그리고 [REPEAT] 메모를 선택하고, REPEAT 명령어 인자 설정을 위해서 워드의 검토 버튼 을 클릭한다. 검토창이 나타나면 다음 그림과 같이 [REPEAT] 메모의 내용 속성에 인자를 입력한다.

참고

  • 메모의 작성자 속성은 사용자에 의해서 임의로 수정될 수 없다. 따라서, 현재의 템플릿내부에 이미 존재하는 메로 명령어를 원하는 위치에 복사하여 사용한다.

그리고 [REPEAT]과 [ENDREPEAT] 명령어 사이에 [DISPLAY] 명령어를 복사하고, 인자의 값을 다음과 같이 수정하면, "::Use case Model" 경로 아래의 모든 유스케이스를 반복하면서 유스케이스의 이름과 설명을 출력한다.

다음과 같이 [IF], [ENDIF] 명령어를 작성하면, 특정 조건을 만족하는 경우에 대해서 명령어가 수행되거나 출력되도록 할 수 있다.
 

[REPEAT]과 [IF] 명령어의 조합은 [REPEAT] 명령어 하나로 대체 가능하다. [IF] 명령어의 조건 인자를 [REPEAT] 명령어의 조건 인자로 옮기고, [IF]와 [ENDIF] 명령어를 삭제하면 동일한 의미가 된다.

워드 템플릿내도 다른 템플릿과 마찬가지로 SCRIPT 명령어를 이용하여 원하는 JScript 구문을 워드 문서 생성중에 실행할 수 있다. JScript 구문을 실행한 후 결과 값을 화면에 출력하기를 원한다면, [SCRIPT] 명령어의 내용 속성에 JScript 문장을 기술하고 특정 변수를 설정하도록 하며, [DISPLAY] 명령어의 인자에 설정한 변수 이름을 위치하면 된다.

워드 템플릿에는 [REPEAT] 명령어를 테이블의 특정행을 반복하기 위해서 사용할 수 있다. [REPEAT] 명령어에 인자를 설정하는 방식은 동일하지만 대응되는 명령어가 [ENDREPTR] 명령어이다. 그리고 [REPEAT]과 [ENDREPTR] 명령어의 위치는 테이블에서 반복해서 생성되기를 원하는 행의 첫번째 셀에 항상 [REPEAT] 명령어가 위치해야하며, 반복 생성을 원하는 행의 마지막 셀에 반드시 [ENDREPTR] 명령어가 위치해야 한다. 다음은 Usecase의 이름과 설명을 테이블로 생성하는 예이다.

모든 명령어에 대한 편집을 완료하고 문서를 저장하면, 직접 작성한 워드 템플릿을 이용하여 문서 생성이 가능하다. 문서 생성에 대한 자세한 절차는 사용자 가이드 7장.Generating by template을 참조한다.

Excel 템플릿 작성하기

EXCEL 템플릿 작성을 위해서 사전에 다음과 같은 절차를 수행한다.

  1. EXCEL 템플릿 생성용 샘플 문서(template-excel.zip)를 StarUML 공식 싸이트(www.staruml.com)의 템플릿 다운로드로부터 다운 받는다.
  2. staruml-generator\templates 폴더 밑에 template-excel라는 이름의 폴더를 생성해서 다운 받은 파일의 압축을 푼다.
  3. StarUML을 실행한다.
  4. [Tools] -> [StarUML Generator...] 메뉴를 클릭한다.
  5. [Select templates for generator] 페이지에서 "Default Excel Template" 템플릿을 선택한다.
  6. [Clone Template]  버튼을 클릭하고 템플릿의 이름과 템플릿이 저장될 경로를 지정하고, [OK] 버튼을 클릭한다.
  7. [List of templates] 에서 새로 생성한 템플릿을 선택하고, [Open Template] 버튼을 클릭하면 엑셀에서 복사한 엑셀 템플릿이 열려진다.
  8. 열려진 엑셀 화면에서 다음의 규칙에 따라서 명령어를 작성하도록 한다.

엑셀 템플릿에서 명령어 영역은 메모를 사용하여 표현한다. 명령어 이름과 인자들은 메모의 내용 속성에 표시한다. 메모의 내용은 명령어 이름, 그리고 인자들이 오는 순서로 구성된다. 그리고 명령어 이름과 인자, 인자와 인자 사이의 구분은 세미콜론 ";'을 사용으로 한다. 메모 이외의 영역은 스타일 영역으로 취급되며, 생성시 문서에 그대로 출력된다.

엑셀 템플릿은 엑셀의 장점을 충분히 이용하여, 모델 정보로부터 통계나 수치 데이터를 추출하여 분석하고 판단할 수 있다. 이 절에서는 현재 모델링된 정보나 역공학을 통해서 읽어들인 모델 정보로부터 클래스 관련 정보에 대한 수치 데이터를 추출하여 그래프화 하는 방법을 설명한다.

모델로부터 클래스 관련 정보를 추출하기 위해서 우선 모델에 포함된 모든 클래스를 나열해야 한다. REPEAT 명령어를 이용하여 클래스가 출력될 위치와 반복할 클래스에 대한 관련 인자를 다음과 같이 설정한다.

주의

  • EXCEL 템플릿에서 REPEAT 명령어는 행 단위로 증가하는 반복만을 제공한다. 행내의 열 단위로 증가하는 반복은 제공하지 않는다.

그리고 REPEAT과 ENDREPEAT 명령어 사이에 DISPLAY 명령어(메모)를 삽입하고, 각각 클래스의 이름, 속성 개수, 연산 개수, 연관의 개수를 가져와서 출력할 수 있도록 인자의 값을 다음과 같이 수정한다.

여기에 다시 엑셀 챠트를 삽입하고 원본 데이터를 Attribute, Operation, Association Count로 지정하면 모든 설정이 완료된다.

모든 명령어에 대한 편집을 완료하고 문서를 저장하면, 직접 작성한 워드 템플릿을 이용하여 문서 생성이 가능하다(문서 생성에 대한 자세한 절차는 사용자 가이드 7장.Generating by template을 참조한다). 다음 그림은 클래스와 관련된 수치 데이터를 자동 생성한 결과이다. 엑셀 명령어와 엑셀의 다양한 챠트를 혼합하여 활용함으로써, Q/A 팀이나 프로젝트 팀등에서 필요한 설계 관련 수치 정보를 쉽게 분석하고 판단할 수 있다.

PowerPoint 템플릿 작성하기

POWERPOINT 템플릿 작성을 위해서 사전에 다음과 같은 절차를 수행한다.

  1. POWERPOINT 템플릿 생성용 샘플 문서(template-powerpoint.zip)를 StarUML 공식 싸이트(www.staruml.com)의 템플릿 다운로드로부터 다운 받는다.
  2. staruml-generator\templates 폴더 밑에 template-powerpoint라는 이름의 폴더를 생성해서 다운 받은 파일의 압축을 푼다.
  3. StarUML을 실행한다.
  4. [Tools] -> [StarUML Generator...] 메뉴를 클릭한다.
  5. [Select templates for generator] 페이지에서 "Default Powerpoint Template" 템플릿을 선택한다.
  6. [Clone Template]  버튼을 클릭하고 템플릿의 이름과 템플릿이 저장될 경로를 지정하고, [OK] 버튼을 클릭한다.
  7. [List of templates] 에서 새로 생성한 템플릿을 선택하고, [Open Template] 버튼을 클릭하면 파워포인트에서 복사한 POWERPOINT 템플릿이 열려진다.
  8. 열려진 POWERPOINT 화면에서 다음의 규칙에 따라서 명령어를 작성하도록 한다.

POWERPOINT 템플릿에서 명령어 영역은 메모를 사용하여 표현한다. 명령어 이름은 메모의 내용 속성 첫째 줄에 << 와 >> 문자열 사이에 표시하고, 인자들은 메모의 내용 속성 두번째 줄에 표시한다. 인자와 인자 사이의 구분은 세미콜론 ";'을 사용으로 한다. 메모 이외의 영역은 스타일 영역으로 취급되며, 생성시 문서에 그대로 출력된다.

프로젝트 내부의 유스케이스 다이어그램과 다이어그램의 설명을 슬라이드로 생성하는 POWERPOINT 템플릿 작성 경우를 예를 들어 알아보자. 우선 하나의 슬라이드에 하나의 다이어그램이 열거되도록 템플릿을 구성하기 위해서 해당 슬라이드 왼쪽 상단 메모를 추가하고 다음과 같이 REPEAT 명령어의 인자를 설정한다. 이때 ENDREPEAT을 바로 설정하지 않도록 한다. 이유는 잠시 후에 설명한다.

주의

  • POWERPOINT 템플릿에서 REPEAT 명령어는 슬라이드 단위의 반복만을 제공한다. 또한 슬라이드내에 존재하는 개별 요소의 반복은 제공하지 않는다.

그 다음에 UseCaseDiagram의 이름이 슬라이드의 제목으로 나올수 있도록 텍스트 박스와 DISPLAY-TEXT 명령어를 추가하고 다음과 같이 인자를 설정한다. 그리고 텍스트 박스에는 $$라는 문자열을 삽입하여 DISPLAY-TEXT 명령어가 어느 위치에 텍스트를 출력할지 지정한다. 이때 주의할 점은 DISPLAY-TEXT와 다음에 설명할 DISPLAY-IMAGE 명령어는 명령어 영역을 포함하는 텍스트 박스속에 DISPLAY-... 명령어의 수행 결과를 출력한다. 따라서 반드시 텍스트 박스의 테두리 안에 DISPLAY-... 명령어가 위치해야 한다.

이제 다이어그램이 슬라이드 중앙에 출력하기 위해서, 텍스트 박스를 이용하여 출력할 위치와 크기를 잡는다. 그리고 DISPLAY-IMAGE 명령어를 추가하고 다음과 같이 인자를 설정한다.

그리고 다이어그램의 설명 내용이 슬라이드 하단에 출력될 수 있도록 DISPLAY-TEXT 명령어와 텍스트 박스를 추가하고, 인자를 다음과 같이 설정한다.

마지막으로 반복이 되는 범위가 되는 슬라이드의 하단에 ENDREPEAT 명령어를 추가한다. ENDREPEAT 명령어 추가를 미룬 이유는 Generator의 메모 해석의 순서가 메모의 위치가 아니라 생성 순서에 의존하기 때문이다. 즉 슬라이드내에서 명령어가 위에 있다고 먼저 실행되는 것이 아니라, 명령어에 부여된 인덱스 번호가 앞선 것이  먼저 실행된다. 따라서 REPEAT, ENDREPEAT, DISPLAY-TEXT 순서로 명령어를 추가하면, REPEAT과 ENDREPEAT 사이에는 어떠한 명령도 없는 것으로 해석한다. 따라서 REPEAT 명령어에 의해서 또다른 명령어를 반복하려한다면, 반드시 REPEAT 명령어 보다 인덱스 번호가 느리면서 ENDREPEAT 명령어보다 인덱스가 앞서게 명령어를 추가, 삭제해야 한다.

모든 명령어에 대한 편집을 완료했다면 문서를 현재 열려진 파일명 그대로 저장한다. 이제부터 직접 작성한 POWERPOINT 템플릿을 이용하여 문서 생성이 가능하다. 문서 생성에 대한 자세한 절차는 사용자 가이드 7장.Generating by template을 참조한다.

템플릿 등록하기

사용자가 직접 작성한 자신만의 템플릿 문서를 Generator에 등록할 수 있습니다.

  1. [Select templates for generation] 페이지에서 [Register Template] 버튼을 클릭합니다.
  2. [Register Template] 다이얼로그가 나타나면, 버튼을 클릭하여 템플릿 정보가 저장되어질 파일의 위치를 선택합니다.
  3. [Properties:] 입력창에서 등록할 템플릿의 정보들을 입력하고 [OK] 버튼을 클릭하여 템플릿을 등록합니다.

기본 정보

템플릿 등록시에 템플릿명과 그룹, 분류, 설명에 대한 기본정보를 설정합니다.
item description
Template Name 등록될 템플릿명을 지정합니다.
Group 템플릿이 속하는 그룹을 지정합니다. 기존에 있는 그룹 외에 새로운 그룹을 정의할 수 있습니다.
Category 프로젝트 관리, 요구사항 등의 분류를 지정합니다.
Description 템플릿의 개략적인 설명을 기술한다.

상세 정보

템플릿 등록시에 필요한 상세 정보들을 설정합니다.
항목 설명
Document Type 템플릿의 문서 형태를 지정합니다. DOCUMENT(문서), REPORT(보고서), CODE(소스코드) 중 하나를 선택합니다.
Format 문서 생성의 결과로 생성될 문서의 포맷을 지정합니다.
Version 템플릿의 버전 정보를 "1.0"과 같은 형식을 기록합니다.
Related Profile 템플릿을 적용할 모델에 포함할 프로파일들을 선택합니다.
Related Approach 템플릿을 적용할 모델의 기본 접근법을 선택합니다.
Translator Type

문서 생성기의 종류를 명시합니다. WORD(워드 문서 생성기), EXCEL(엑셀 문서 생성기), POWERPOINT(파워포인트 문서 생성기), TEXT(텍스트 문서 생성기), COM(COM 컴포넌트 기반의 사용자 정의 생성기), SCRIPT(스크립트 기반의 사용자 정의 생성기), EXE(실행파일 기반의 사용자 정의 생성기) 중 하나를 선택합니다.

Value Meaning
WORD word document generator
EXCEL excel document generator
POWERPOINT powerpoint document generator
TEXT code generator
COM COM-based generator defined by user
SCRIPT Script-based generator defined by user
EXE Executable file-typed generator made by user
Translator 문서 생성기의 이름을 명시합니다. 빌트인 문서 생성기(WORD, EXCEL, POWERPOINT, TEXT)는 지정하지 않습니다. 사용자 정의 생성기는 생성기의 파일명을 적습니다.
Example 문서 생성에 맞는 예제 모델 파일을 지정합니다.
Parameters 문서 생성에 필요한 인자를 정의합니다.
Related files 문서 생성에 필요한 부가적인 파일들을 지정합니다.

파라미터 정보

  1. Parameters 항목에서 버튼을 클릭합니다.
  2. [Parameters] 다이얼로그가 나타나면,  새로운 파라미터를 삽입하기 위해서 버튼을 클릭하며, 파라미터를 삭제하기 위해서는 버튼을 클릭한다.
  3. [New Parameter] 다이얼로그가 나타나면 파라미터의 이름과 타입, 그리고 디폴트값을 입력하고 [OK] 버튼을 클릭한다.

Translator Type에 따른 기본 파라미터 목록을 다음과 같이 설정합니다.

항목 타입 대상 템플릿 설명
TemplateFile FILENAME or STRING WORD,EXCEL,
POWERPOINT
문서 생성시에 사용될 템플릿 문서 파일명을 지정합니다.
OutputFile FILENAME or STRING WORD,EXCEL,
POWERPOINT,
TEXT
문서 생성의 결과로 생성될 파일명을 지정합니다.
Keep Comment BOOLEAN WORD,EXCEL,
POWERPOINT
생성된 문서내에 커맨드 정보를 남길지 여부를 지정합니다.
ShowGenerationProcess BOOLEAN WORD,EXCEL,
POWERPOINT
MS Office에 일어나는 생성 과정을 보여줄지 여부를 지정합니다. 이 항목이 true값으로 설정되면 생성시 성능이 떨어질수 있습니다.
Normal Generation BOOLEAN WORD 커맨드의 상대 경로를 최상위 프로젝트로 지정합니다. 만약 false로 설정되면 현재 모델에서 선택된 요소에서부터 상대 경로가 지정됩니다.
Generate Index BOOLEAN WORD 생성된 문서내에서 색인 요소를 검색하여, 문서 색인을 생성합니다.
intermediate STRING TEXT 코드 생성에 필요한 중간 코드를 저장할 파일명을 지정합니다.
target STRING TEXT 생성되는 코드 파일이 여러개일 경우에 코드 파일들이 존재할 최상위 경로명을 지정합니다.

참고

  • 파일명과 관련된 파라미터 값을 설정하는 경우에는 StarUML Generator에 명시된 상수를 사용할 수 있습니다. 상수에는 다음과 같은 것들이 있습니다.

이름

설명

$PATH$ 현재 템플릿 정보와 템플릿이 존재하는 디렉토리 경로를 의미합니다.
(예) $PATH$\BusinessActorReport.doc
$GROUP$ 그룹명을 의미합니다.
$CATEGORY$ 분류명을 의미합니다.
$NAME$ 템플릿명을 의미합니다.
$TARGET$ [Generator] 다이얼로그에서 사용자가 지정한 문서 생성 경로를 의미합니다.

등록된 템플릿을 다루는 방법에 대해서는 사용자 가이드 7장. Generating Codes and Templates의 Generating by Template을 참조한다.

템플릿 배포하기

템플릿은 staruml-generator 하단에 설치된다. staruml-generator 하단에 templates 폴더에 StarUML Generator에서 사용하는 모든 템플릿들이 존재하고, 또한 배치 작업 목록들도 존재한다. 일반적으로 한개의 템플릿은 한개의 폴더 안에 관련된 모든 리소스 파일을 포함하고 있으며, 모든 템플릿 폴더들은 templates 폴더의 바로 아래에 위치한다. 하나의 템플릿은 템플릿 정의 기술 파일(.tdf)과 템플릿 문서(.doc, .ppt, .xls, .cot) 두가지 종류의 파일로 구성된다. 템플릿 정의 기술 파일에서는 사용자 가이드 7장.Generating Codes and Documents > 템플릿 등록하기 > 기본/상세/파라미터 정보에서 설정한 내용들이 저장되어 있으며, 템플릿 문서는 모델을 가져와서 보여주기 위한 명령어와 스타일을 포함하고 있습니다. 배치 목록은 staruml-generator 폴더 아래의 batches 폴더에 배치 작업 파일(.btf) 형태로 존재합니다.

파일 확장자명

설명
BTF 배치 작업 목록과 생성 인자 정보를 포함하고 있는 XML 파일
TDF 템플릿에 대한 정보(이름, 종류, 참조 템플릿 문서명, 생성 인자등)를 기술한 XML 파일
DOC, DOT 워드 문서 생성시 사용되는 명령어와 스타일 정보를 포함하고 있는 템플릿 파일
XLS, XLT 엑셀 문서 생성시 사용되는 명령어와 스타일 정보를 포함하고 있는 템플릿 파일
PPT, POT 파워 포인트 문서 생성시 사용되는 명령어와 스타일 정보를 포함하고 있는 템플릿 파일
COT 코드 생성에 사용되는 명령어와 스타일 정보를 포함하고 있는 템플릿 파일

Generator의 폴더 구성

staruml-generator 모듈의 폴더 구성은 다음과 같다.

staruml-generator\
    templates\
        template1\
            template1.tdf
            template1.doc
        template2\
            ...
    batches\
        batch1.btf
        ...

템플릿 설치와 제거

템플릿을 설치하는 방법은 매우 간단하다. 만약 다른 사용자에게 자신이 작성한 템플릿 배포하여 설치하고 싶다면 staruml-generator\templates 폴더 아래에서 배포할 템플릿을 포함하는 폴더를 복사하고, 설치될 컴퓨터의 staruml-generator\templates 폴더 아래의 경로에 붙여 넣으면 설치가 종료된다.

템플릿을 제거하는 방법 또한 매우 간단하다. staruml-generator\templates 폴더 아래에서 삭제하고자 하는 해당 템플릿 폴더를 삭제하면 설치가 제거한다.

템플릿의 패키징

staruml-generator\templates 폴더 아래는 일반 파일처럼 단지 여러개의 템플릿 디렉토리를 또 다른 상위 폴더 아래로 위치하는 것이 가능하다. 물론 이러한 폴더의 위치 변화에 의해서 Generator의 목록 변화는 전혀 없다. 따라서 파일 형태의 관리나 여러 개의 템플릿을 한번에 묶어서 배포하는 것이 용이하다. 예를 들어 그룹과 카테고리가 비슷한 여러개의 템플릿 폴더들을 그룹별로 하나의 폴더 밑에 위치시켜서 사용하고, 배포시에는 해당 그룹의 폴더 또는 templates 폴더 전체를 압축하여 다른 컴퓨터에 배포하고, 배포된 압축 파일을 다시 통째로 staruml-generator\templates 아래에 풀면 쉽게 템플릿 패키지를 설치할 수 있다.

배치 작업의 설치와 제거

배치 작업을 설치하고 제거하는 방법도 매우 간단하다. 우선 배치 작업 목록에서 사용되는 템플릿 폴더를 설치하고 , staruml-generator\batches 폴더 아래에서 원하는 배치작업(.btf) 파일을 복사하여, 설치될 컴퓨터의 staruml-generator\batches 폴더 아래로 복사하면 배치의 설치가 완료된다.

배치 작업의 설치 제거는 staruml-generator\batches 폴더 아래의 .btf 파일을 삭제하면 것으로써 완료됩니다.


반응형

댓글