2009. 1. 2. 17:57
[UML] Component Diagram
2009. 1. 2. 17:57 in 개발/소프트웨어공학
고층빌딩을 건축할 때 흔히 볼 수 있는 것이 타워 크레인입니다. 이 중장비는 빌딩의 뼈대가 되는 철골 구조물이나 콘크리트 벽체를 높은 곳으로 들어올려 한 층, 한 층 "조립"해 나가는데 필수적인 장비입니다. 요즈음의 빌딩들은 철골 구조물과 콘크리트 구조물을 공장에서 미리 만든 후 현장으로 옮겨와 조립하는 방식으로 만들어 나갑니다. 이러한 부품(컴포넌트)과 조립에 의한 생산방식은 근대 이후 제조업에서는 필수적인 전제 조건이 되었습니다. SW분야에서도 이러한 부품화 및 조립개념이 도입되고 있습니다. CBD(Component Based Development)가 그것입니다. 컴포넌트 다이어그램은 이러한 부품을 정의할 수 있게 도움을 주는 모델입니다. 자, 그럼 시작해 볼까요? |
1.개요
| |||||||||||||||||||
여기서 컴포넌트는 매우 광범위한 의미로 사용되는 용어입니다. 여러 분야에서 쓰이는 컴포넌트의 많은 의미 중에서, SW 분야에서 사용되는 컴포넌트를 정의하면 다음과 같습니다. | |||||||||||||||||||
다음은 UML에서 정의한 컴포넌트의 정의입니다. |
| ||
(참고자료 : UML 1.3 Specification, OMG) |
|
2.구성요소
|
|
|
|
|
3.사례연구
|
|
|
위 컴포넌트 다이어그램은 umlviewer.exe라는 실행 모듈이 동작하면서 graphics.dll,
dbhandler.dll , umlcore.obj라는 실행 모듈들에게 서비스를의 실행을 요청한다는
것을 모델링한 것입니다.
dbhandler.dll , umlcore.obj라는 실행 모듈들에게 서비스를의 실행을 요청한다는
것을 모델링한 것입니다.
4.작성단계 및 주의사항
|
|
2009. 1. 2. 16:01
[안영회의 UML 강좌3] - Use Case Diagram
2009. 1. 2. 16:01 in 개발/소프트웨어공학
RUP (Rational Unified Process)
지난 시간에는 UML의 필요성과 간단한 개념을 살펴보았습니다. 이번 시간부터는 UML을 구성하는 각종 다이어그램들을 하나씩 살펴봅시다. 또한 깊은 이해와 함께 몸으로 익힐 수 있도록 UML 모델링 도구로 가장 유명한 Rational Rose를 이용하여 간단한 실습을 해보도록 하죠. 실습을 위한 소프트웨어는 UML 관련 책자의 부록이나 Rational 사의 웹사이트를 통해 평가판을 구하실 수 있습니다. 평가판을 다운로드 할 수 있는 웹 페이지의 URL은 다음과 같습니다.
본 내용을 진행하기에 앞서 다음의 서적들을 참고로 이 글을 작성했음을 밝힙니다. 더 깊은 이해를 위해서는 이들 서적을 참고하세요.
� Visual Modeling with Rational Rose and UML, Terry Quatrani, Addison Wesley
� UML Distilled Second Edition, Martin Fowler with Kendall Scott, Addison Wesley
� 초보자를 위한 UML, Joseph Schmuller, 곽용재 역, 인포북
� The Rational Unified Process An Introduction Second Edition, Philippe Kruchten
� The Unified Modeling Language Reference Manual, James Rumbaugh, Ivar Jacobson, Grady Booch, Addison Wesley
예제 화면은 rose2001A.04.00 버전을 기준으로 사용했습니다. 다른 버전을 사용하시더라도 UML을 배우는 입장에서 큰 차이는 없을 것입니다. 예제 내용은 일반적이고 검증된 것을 사용하고자 Visual Modeling with Rational Rose and UML의 예제를 인용했습니다. UML 구성 요소들의 이름을 한글로 사용할 수 있지만, 코드와의 일관성 유지 등의 목적으로 영어를 사용했습니다. 다만, 한글로 충분히 설명을 기술하도록 하겠습니다.
RUP (Rational Unified Process)
유즈케이스(Use Case)에 대해 본격적으로 설명하기에 앞서 RUP에 대한 언급을 하지 않을 수가 없습니다. UML은 모델링을 위한 표기법입니다. UML이 시스템 개발에 매우 중요하다 하겠지만, UML만으로는 아무 것도 되지 않습니다. 객체 지향으로 시스템 개발을 하겠다고 UML을 사용하면서 개발은 기존의 전통적인 방식을 따른다면 효과가 높지 않을 것입니다.
객체 지향의 시스템 개발을 하려고 한다면 개발의 방법론 역시 객체 지향을 따라야 할 것입니다. 수많은 객체 지향 방법론이 존재한다고 합니다. 이 중에 가장 부각되고 있는 것이 RUP입니다. 무엇보다 RUP는 Rational의 소프트웨어 군을 이용한 개발 방법론으로서 이론뿐만 아니라 구체적인 솔루션이 동반된다는 강점을 지니고 있습니다.
쉽게 얘기하면Rational의 도구들과 RUP에 맞춰서 UML을 사용하여 개발 한다면 삼박자를 갖추게 된다는 매력적인 제안이죠. 우리는 RUP를 배우는 게 아니고 UML을 배우는 것이지만, 시스템을 개발하는 과정을 염두에 두지 않고 UML을 논하는 것은 공허할 수 있습니다. UML이 어떻게 쓰이는지를 생각하지 않겠다는 것이 될 수 있으니까요.
RUP가 최상의 개발 방법론은 아니지만, 개발 공정에 대한 한 예로 RUP를 간단하게 엿보도록 하죠.
다음은 RUP의 개발 공정에 대한 개괄적 그림입니다.
[RUP 개발 공정]
RUP의 개발 공정은 크게 두 축으로 나눠 볼 수 있습니다. 우선 그림의 가로축으로 시간의 흐름에 따른 네 가지 단계(Phases)로 구분할 수 있고, 세로축의 9가지 웍플로우(Workflow)로 나눌 수 있습니다. 웍플로우는 컴포넌트처럼 작업의 성격에 따라 일을 분리한 것입니다.
기존의 방법론이 도입기에는 주로 타당성 검증 등을 하고, 분석 및 설계, 구현, 검증 및 배포와 같은 식으로 일원적인 관점에서 개발을 했다면 RUP는 이차원적인 관점을 갖는다고 하겠습니다. 도입기라고 할 수 있는 도입(Inception) 단계에서는 주로 비즈니스 모델링(Business Modeling)을 수행하지만 이를 위해 상당량의 요구사항 분석을 수행해야 하고, 개발 프로젝트의 타당성이나 위험도 등의 검증을 위해 프로토타입을 만들어 본다든가 하는 구현도 일부분 수행하게 됩니다. 마찬가지로 향후 프로젝트를 정교하게 발전시켜가는 정련(Elaboration) 단계에서도 요구사항 수집과 분석 설계는 물론 도입 단계에서 만들어진 비즈니스 모델링(Business Modeling)을 검증하고 더욱 정교하게 수정하는 일도 계속하게 됩니다. RUP는 이와 같은 식으로 점진적인 개발 방법을 채택하고 있습니다. 이러한 단계들과 웍플로우의 적절한 조합은 두말할 필요 없이 매우 중요하다고 하겠죠. 프로젝트 관리자에 의해서 이러한 적절한 조합이 계획되는데 이를 이터레이션(Iteration)이라고 합니다. 결국 RUP는 이터레이션의 연속으로 개발을 수행하게 되는 것이죠.
유즈케이스 이해하기
이제야 본격적으로 유즈케이스를 얘기할 차례군요. 유즈케이스는 우리말로는 쓰임새라고도 합니다. 두 가지를 동시에 사용하는 혼돈을 막기 위해서 여기서는 원어로 유즈케이스라고 표기하는 것을 원칙으로 하겠습니다.
유즈케이스라 함은 말 그대로 ‘쓰이는 경우’라던가 ‘용도’ 같은 의미로 받아들여도 큰 무리가 없다고 보여집니다. 어떤 일에 쓰느냐 하는 것이죠. 시스템이 쓰여지는 용도를 모아서 시스템을 만들어낸다면 다용도 시스템이 만들어지겠죠. 유즈케이스들을 모아서 시스템으로 매핑 시키는 것을 개발 과정의 간단한 정의로 보아도 무리가 없을 만큼 유즈케이스는 가치 있는 것입니다.
제가 한국 Rational 이사님의 세미나를 들은 일이 있습니다. 그때 UML에 관한 부분에서는 유즈케이스를 유난히 강조하시더군요. 유즈케이스는 사용자 시각에 맞춘 분석입니다. 어떤 시스템을 만드느냐를 사용자 입장에서 조명하는 것이죠. 최근 비즈니스가 발전함에 따라 고객 지향 마인드가 널리 퍼져 있습니다. 당연한 결과라 하겠죠. 마찬가지로 시스템 개발에 있어서도 고객 관점에서 바라보는 시각이 부각되는 것은 당연한 일이라 하겠습니다.
객체 지향 개발 자체가 기존 개발 방법들에 비해 상당히 인간위주의 개발 방법론이라는 느낌이 드는데 유즈케이스는 이러한 휴머니즘의 선봉에 서있다고 해도 큰 비약은 아니라는 생각이 듭니다. 아무튼 유즈케이스는 시스템 보다는 그것을 사용하는 인간, 즉 사용자의 입장을 우선해서 시스템이 어때야 하는가를 알아보는 것입니다. 아무리 잘 만든 시스템도 인간에게 가치를 주지 못하면 무의미한 것이죠.
이러한 휴머니즘을 잊지 마시고, 유즈케이스를 배워 봅시다. 유즈케이스는 시스템의 행위를 결정하는 것입니다. 구체적으로는 시스템의 기능을 정의하고, 범위를 결정함으로써 시스템과 외부 환경 변수를 구분하고, 상호 관계를 정립하는 것이라고 볼 수 있습니다.
개발 공정과 연관해서 보면 도입 단계에서 주요 유즈케이스를 뽑아내고, 차츰 이를 정련하게 됩니다.
유즈케이스를 나타내는 유즈케이스 모델(Use case Model)은 유즈케이스 다이어그램으로 표현됩니다. 유즈케이스 다이어그램은 액터(Actor, 행위자)와 유즈케이스, 그리고 관계(Relationship)로 나타냅니다.
유즈케이스, 액터, 관계
액터(Actors)
액터는 시스템의 일부가 아닙니다. 액터는 시스템과 상호작용을 하는 모든 것들을 나타냅니다. 시스템을 사용하게 될 사람은 물론이고, 연관된 다른 시스템도 액터입니다. 대체로 액터의 행위는 정보의 입력과 출력으로 살펴 볼 수 있습니다. 정보를 입력하거나 출력하는 액터가 있고, 입출력을 모두 행하는 액터가 있을 것입니다.
액터를 뽑아내는 일은 매우 중요한 일입니다. 모든 주요 액터를 고려해야만 모두에게 가치 있는 시스템이 될 수 있을 테니까요. Visual Modeling with Rational Rose and UML에 따르면 다음과 같은 질문들이 액터를 뽑아내는데 도움을 준다고 합니다.
� 특정 요구사항에 이해관계자는 누구인가?
� 어떠한 부서나 집단에서 시스템을 사용하는가?
� 시스템을 사용함으로써 이익을 얻는 이는 누구인가?
� 누가 시스템에 정보를 입력하고 사용하며 삭제하는가?
� 누가 시스템의 유지보수를 수행하는가?
� 시스템이 외부 자원을 사용하는가?
� 한 사람이 복수의 역할을 수행하는가?
� 여러 사람이 한 가지 역할을 수행하는가?
� 시스템이 레거시 시스템(Legacy System)과 상호 작용 하는가?
액터는 다이어그램 상에서 막대인간(stickman)으로 표현됩니다.
[액터의 UML 표기법]
유즈케이스 (Use Cases)
유즈케이스 모델은 시스템과 액터와의 의사소통을 표현합니다. 각각의 유즈케이스는 시스템이 제공해야 하는 기능을 묘사하고, 이러한 유즈케이스들이 시스템 전체의 기능을 나타냅니다. 하나의 유즈케이스는 액터가 원하는 기능을 수행하기 위해 시스템이 수행하는 일련의 처리들의 연속입니다. Visual Modeling with Rational Rose and UML에 따르면 다음과 같은 질문들이 유즈케이스를 뽑아내는데 도움을 준다고 합니다.
� 각각의 액터의 업무는 무엇인가?
� 액터가 시스템의 정보를 생성, 저장, 수정, 삭제하고 읽는가?
� 어떠한 유즈케이스가 시스템의 정보를 생성, 저장, 수정, 삭제하고 읽는가?
� 액터가 돌연한 외부 변화에 대한 정보를 시스템에게 알릴 필요가 있는가?
� 시스템에 갑자기 발생한 일들을 액터가 알아야 하는가?
� 어떠한 유즈케이스들이 시스템을 지원하고 유지하는가?
� 유즈케이스들이 모든 요구되는 기능을 포괄하여 수행하는가?
유즈케이스의 UML 표기법은 타원(Oval)입니다.
[Use Case의 UML 표기법]
관계(Relationship)
관계는 크게 두 가지로 볼 수 있습니다. 하나는 액터와 유즈케이스의 관계이고, 다른 하나는 유즈케이스간의 관계입니다. 액터와 유즈케이스와의 관계는 연관(Association) 혹은 커뮤니케이션 연관(Communicates Association)이라고 합니다. 액터와 유즈케이스간의 의사소통을 나타내기 때문이겠죠.
연관은 양방향으로 진행될 수 있습니다. 연관의 방향성은 어느 쪽이 연관을 유발하느냐에 따라 달라집니다. 오직 액터 혹은 유즈케이스만이 연관을 유발하는 단방향 연관이 있고, 양쪽 모두에서 연관을 일으키는 양방향 연관이 있습니다.
유즈케이스간의 관계는 두 가지 형태가 있습니다. 포함(Inclusion 혹은 사용 Use)과 확장(Extension)입니다. 여러 유즈케이스들이 하나의 기능 조각을 공유할 때 이를 모든 유즈케이스에 각각 집어넣는 것 보다는 이를 분리해두고 필요한 유즈케이스들이 이를 포함해서 사용하게 됩니다. 예를 들어 회원제를 기반으로 한 인터넷 사이트에 접속하셔서 각종 서비스를 제공받기에 앞서 늘 수행하는 회원 인증과 같은 유즈케이스가 포함 관계입니다.
확장 관계는 기본 유즈케이스에서 특정 조건이나 액터의 선택에 따라 발생하는 유즈케이스입니다. 가령, ATM에서 사용자의 메뉴 선택에 따라 달라지는 유즈케이스의 경우나 긴급 상황 시에 발생할 수 있는 유즈케이스가 확장의 예로 생각할 수 있습니다.
관계는 선으로 표기하며 관계의 방향성은 화살표로 나타냅니다. UML에는 스테레오타입(Stereotype)이라는 개념이 있습니다. 이는 기본적인 모델링 요소 이외의 새로운 타입을 나타내는 것입니다. 따라서 확장을 가능하게 해줍니다. 스테레오타입이라는 것이 인쇄소의 연판을 나타내는 것입니다. 어느 정도 변화를 줄 수 있는 유연한 판형이라는 것이죠. 이처럼 스테레오타입은 기본 모델링 요소에 확장성을 부여할 수 있는 개념입니다.
2008. 12. 30. 19:22
Java FX for Eclipse
2008. 12. 30. 19:22 in 개발/자바
JavaFX가 넷빈즈에서만 돌아가는 줄 알았는데 역시나 이클립스 용 플러그인이 나와 있습니다.
출처 : http://javaora.tistory.com/entry/Java-FX-for-Eclipse
위 링크를 통해 다운로드 받은 파일을 eclipse 설치 폴더에 압축해제하면 설치는 완료 됩니다.
사용방법은 다음과 같습니다.
아래 이미지와 내용은 해당 사이트의 Getting Start 문서를 옮겨왔습니다.
JavaFX SDK 설치
JavaFX SDK for Windows or Mac Os X 다운로드 받아 설치합니다.
Eclipse 설치
Eclipse 3.4 이상이 필요하며. Eclipse IDE for Java EE Developers for Windows or Mac OS X 설치가 필요합니다.
Plugin 설치
- plugin을 다운로드 받습니다.:
- com.sun.javafx.eclipse.feature-win32-win32-x86-1.0.zip for Windows
- com.sun.javafx.eclipse.feature-macosx-carbon-x86-1.0.zip for Mac OS X
- eclipse 설치 디렉토리에 압축을 해제합니다.
- Eclipse 을 실행합니다.
JavaFX 프로젝트 만들기 와 JavaFX SDK 설정하기
- 이클립스를 시작하면 이클립스 workbench의 기본 레이 아웃이 보입니다.
- Package Explorer에서 오른쪽 클릭하여
- Create a new JavaTM project 로 자바 프로젝트를 생성합니다.
- MyJavaFXProject 라는 프로젝트 명과 버튼을 누릅니다. 새로운 프로젝트가 Package Explorer에 나타납니다.
- 프로젝트 이름을 선택하고 오른쪽 클릭하여
. - 그럼 JavaFX perspective가 활성화 됩니다. JavaFX nature 를 Java Project 에 처음 추가 하는것이라면
JAVAFX_HOME
속성값을 물어볼수도 있습니다.
JAVAFX_HOME
속성 설정은 아래 단계를 따릅니다.:- 다이얼로그 메시지의 No thanks, I prefer 버튼을 누릅니다.
- 아래와 같은 다이얼로그 창이 그면
JAVAFX_HOME 값을 (empty)로 추가시킵니다.
- 그리고
버튼을 누르면 아래와 같은 창이 뜹니다.
버튼을 눌러 the JavaFX SDK 설치 폴더를 지정해줍니다. - Edit 창의 OK 버튼을 누릅니다.
- Preferences 다이얼로그의 OK버튼을 누릅니다. 그럼
JAVAFX_HOME
변수의 세팅이 끝납니다. 만약 버튼을 누르면 에러 다이얼로그 창이 뜨며 다시 반복하여 묻게 됩니다.
- 이로서 첫번째 JavaFX Project 생성이 완료되었습니다.
Adding Files
- MyJavaFXProject 를 확장해보자. src 폴더를 선택하고. 오른쪽 클릭을 하여 package 이름에 com.sun.eclipse.example를 입력해보자.
- src/com.sun.eclipse.example 폴더를 오른쪽 클릭후. .
- New File 마법사가 보일것이다. Name 필드에 Main 이라고 입력하자.
버튼을 누르면 새로운 JavaFX 스크립트 창이 열린다. - Snippets view를 보자. 여기엔 애플리케이션 개발을 도와줄 여러 가지 code snippets 이 있다. A Stage를 선택해보자.
- Insert Template: Stage 다이얼로그가 보인다. title 변수값을 Hello World 로 바꾸자.
노드를 editor window로 Drag and drop 하면.
버튼을 누르면 template 의 결과가 소스 코드로 변환되어 insert 된다. - Mission accomplished, Sir!
Running
Eclipse 로 실행하는 것은 매우 쉽다.
- 툴바의
버튼을 누른다. - 첫번째 실행이라면 Edit Configuration 다이얼로그가 보인다.
모든 옵션은 default 값이다. 가장 흥미로운 부분은 Profil 옵션이다. 여기서 실행환경을 조정할 수 있다. 가능한 옵션은 아래와 같다.:- Desktop profile - Run as Application
- Desktop profile - Run as Applet
- Desktop profile - Run with WebStart
- Mobile Profile[?] - Run in Emulator
- Run 버튼을 눌러 애플리케이션을 작동시킨다. console 창에 실행 프로그레스가 뜰것이다.
Building
Eclipse 에서의 Build 작업은 default로 자동으로 제공된다.
메뉴에서 Build와 관련된 좀 더 많은 옵션을 볼 수 있다.Configuration Options
- Package Explorer 에서 프로젝트 선택 후 오른쪽 클릭하여
- Properties 창이 보이면 .
여기서 JavaFX Project의 실행과 디플로이 프로세스 동안 사용되는 몇가지 기본 파라미터 값을 수정할 수 있다. 좀 더 많은 정보는 JavaFX Packager Documentation 을 통해 볼 수 있다.
JavaFX Help
이 플러그인은 JavaFX SDK documentation로의 접근을 매우 쉽게 해준다. Ctrl + F1 를 누르므로서 Document에 접근 할 수 있다.
출처 : http://javaora.tistory.com/entry/Java-FX-for-Eclipse