Introduction to UML 소프트웨어모델링 유준범교수님 201111397 황정아 201111341 김성민 201111379 이한빈
1. Subject : UML ( Unified Modeling Language ) and UML Tools 2. Outline 1. Subject 2. Outline 3. What is UML? A. 정의 B. 배경 C. RUP D. 개발 E. 특징 F. 구성 (Diagrams) 4. UML Tools A. Star UML B. Amateras UML C. Object Aid D. Rational Rose E. Omondo 5. Conclusion 6. Reference
3. What is UML? A. 정의 UML(Unified Modeling Language) 는요구분석, 시스템설계, 시스템구현등의시스템개발과정에서, 개발자간의의사소통을원활한하기위하여표준화한모델링언어이다. B. 배경객체지향개발방법을주장한 Grady Booch의 Object-Oriented Design(OOD) 와 James Rumbaugh의 Object Modeling Technique(OMT) 그리고 Ivar Jacobson의 Object-Oriented Software Engineering(OOSE) 방법론이유명하였다. 이렇게많은방법론들이존재하다보니모델을표현하기위한동일한기호, 언어를사용하는것에대한필요성을느끼게된다. C. RUP (Rational Unified Process)? UML은객체지향으로시스템을개발하기위한모델링표기법이다. 하지만 UML뿐만아니라객체지향방법론을사용해야한다. 많은객체지향방법론이존재하지만이중가장부각되고있는것이 RUP이다. 무엇보다 RUP는 Rational의소프트웨어군을이용한개발방법론으로서이론뿐만아니라구체적인솔루션이동반된다는강점을지니고있다. 즉, Rational의도구들과 RUP에맞춰서 UML을사용하여개발해야한다. < RUP 개발공정 > RUP의개발공정은크게두축으로나눠볼수있다. 우선그림의가로축으로시간의흐름에따른네가지단계 (Phases) 로구분할수있고, 세로축의 9가지웍플로우 (Workflow) 로나뉜다. 웍플로우는컴포넌트처럼작업의성격에따라일을분리한것이다. 기존의방법론이도입기에는주로타당성검증등을하고, 분석및설계, 구현, 검증및배포와같은식으로일원적인관점에서개발을했다면 RUP는이차원적인관점을갖는다. 도입기라고할수있는도입 (Inception) 단계에서는주로비즈니스모델링 (Business Modeling) 을수행하지만이를위해상당량의요구사항분석을수행해야하고, 개발프로젝트의타당성이나위험도등의검증을위해프로토타입을만들어본다든가하는구현도일부분수행하게된다. 마찬가지로향후프로젝트를정교하게발전시켜가는정련 (Elaboration) 단계에서도요구사항수집과분석설계는물론도입단계에서만들어진비즈니스모델링 (Business Modeling) 을검증하고더욱정교하게수정하는일도계속한다. 프로젝트관리자에의해서이러한적절한조합이계획되는데이를이터레이션 (Iteration) 이라고한다.
D. 개발 i. Booch 와 Rumbaugh 의방법론을통합시킨 Unified Method 0.8 로시작되었고, OOSE 와다른기능들을통합하면서 UML0.9 가탄생하였다. 그리고 1997 년 9 월 UML 1.1 이표준으로채택되면서꾸준히수정, 보완되고있다. ii. UML 은발전될수록 Model-driven Development(MDD) 에필요한고급자동화를 지원해서모델의모호함과부정확성을제거하고, 프로그램이모델의변형및조작을가능하게한다. 향상된언어구조를갖고있어서사용자가언어에보다쉽게전근할수있으며, 도구간내부작동을활성화할수있는모듈식구조를갖고있다. 규모가큰시스템의모델링향상을위해서시스템이더복잡해지고있으므로, 이를지원하기위해유연한새로운계층기능이언어에추가되어소프트웨어모델링을지원한다. 확장메커니즘을이용해서기본적인언어가보다정확하고단순해지도록정리되어서도메인스펙의특성화지원향상을해준다.
그리고다양한모델링개념들의정리, 개념화, 정의를통해서보다단순하고일 관성있는언어고중복된개념을제거하고, 많은정의들을정리했으며텍스트 정의와예제를추가했다. E. 특징 i. UML 은모델링언어로써표기법만을제시하고소프트웨어개발에사용하기위한 여러가지다이어그램들을정의하고다이어그램들의의미에대해정의하고있다. ii. UML 은다이어그램을통해서소프트웨어개발과정을시각화형태로제공하고, 개발자와고객또는개발자들간의의사소통을원활하게할수있도록해준다. iii. 다양하고일관성있는표현방법을제공하여확장성이우월한것규모에관계없 이소형부터대형프로젝트까지모두적용할수있다. iv. 사용자에게간단하고표현이풍부한시각화언어를제공해주고특정한개의개 발 / 방법론에얽매이지않는개방적, 독립적인표기체계이다. F. 구성 모델계층다이어그램설명 클래스 (Class) 클래스구조를나타내는다이어그램 오브젝트 (Object) 인스턴스구조를나타내는다이어그램 구조 컴포넌트 (Component) 시스템을구성할컴포넌트들의구조를나타내는다이어그램 정적 다이어 컴포지트 (Composite) 시스템을실행할때의구조를나타내는컴포지트구조를표현 그램 패키지 (Package) 내부에모델요소를포함할수있는패키지구성을표현 디플로이먼트 (Deployment) 시스템의물리적은하드웨어구성을나타내는다이어그램 시퀀스 (Sequence) 오브젝트사이의메시지교환을나타내는다이어그램 동적 인터액션 타이밍 (Timing) 한상태에서객체가얼마나오랜시간을지체하는지명시
커뮤니케이션 (Communication) 오브젝트사이의메시지교환을나타내는다이어그램 인터액션 행위 인터액션 (Interaction) 오브젝트간의메시지교환을액티비티 다이어그램과같은형태로나타내는다이어그램 액티비티 (Activity) 액티비티의실행순서나실행조건, 실행자의관계를표현 인터액션 내행위 스테이트머신 (State- Mac.) 상태전이와상태전이에따른액션을나타내는다이어그램 요구 분석 유즈케이스 (Use-Case) 시스템이제공할서비스와그이용자의관계를표현 i. Class Diagram 클래스다이어그램은클래스를식별하고그관계를정의하는유용한방식을제 공하고시스템을이해하는데용이하게해준다. 또한, 오퍼레이션과속성을정의 함으로써 SW 시스템을설계하고일관된형식으로 SW 시스템을분석, 설계하는 방식을제공한다. Conceptual level 에서는단순한관계를도출하는데중점을두고업무과점의 class 들만도출하고구현에관련된시각은최대한으로배제한다. Specification level 에서는구현관점을살려모델링을수행하고코딩에대한 관점을배제, 클래스의속성과오퍼레이션을상세히정의하고, 구체적인플
랫폼, 개발언어의특성을반영하지않는다. Implementation level 에서는언어와개발플랫폼이가진특성및제한사항을 반영하여정의된 class 를보고정해진개발언어로개발자가코딩을하기에 충분한정보를모두표현한다. < Class Diagram Relations > 연관관계 (Association) 연관관계는클래스간일반적인협력관계가있을경우정의를하고객체들사이에존재하는공통의성질, 의미를갖는링크들의집합을표현한다. 두클래스가 Association관계가있다면한쪽객체에서다른객체를참조할수있음을의미한다. 집합연관 (Aggregation) 집합연관은클래스간에 전체-부분 (whole-part)" 의관계가있을경우정의하고 Aggregation관계는클래스각각이독립적인생명주기를갖는다. 그리고 Aggregation 관계는 Association 관계의일종이다. 합성연관 (Composition) 합성연관은 Association 관계의일종이며 Aggregation 관계와유사하게두 클래스간에 부분 - 전체 (part-of)" 의관계가있을경우정의한다.
Composition 관계는부분의생명주기가전체의생명주기에종속적인관계 라는것에서 Aggregation 과차이를보인다. 일반화관계 (Generalization) 일반화관계는두클래스는일반화 - 특수화관계가있을때정의 (is-a 관계 ) 되 고상속 (inheritance) 의특성을갖는다. 의존관계 (Dependency) 의존관계는한쪽클래스가실행도중다른쪽클래스의실행을요청하는경우에정의되고클래스간의사용관계를표현한다. Association 관계에비해훨씬종속적인성향을갖는다. Association은존재하는단순히다른객체를참조하고실행을의뢰하지만, Dependency관계는다른객체를생성하고, 소멸시키는등보다종속적인관계에대해정의한다. < Class 들간관계들 > Zero or more(0..n) : 클래스 B 의인스턴스하나에관계된 A 인스턴스가없거
나여러개있는경우 One to Ten(1..10) : 클래스 B 의인스턴스하나에관계된 A 인스턴스가 1 개 보다많고 10 개보다적음 Exactly two, three or five(2,3,5) : 클래스 B 의인스턴스하나에관계된 A 인 스턴스가 2 개혹은 3 개혹은 5 개 다중연관관계 (Multiple Association) : 두클래스간에두가지이상의 Associataion 이존재하는경우 재귀연관관계 (Reflexive Associataion) : 같은클래스끼리맺어지는관계가 존재하는경우 Qualifier 연관관계 : 관계수가복잡할때사용 (many/one-to-many)
연관클래스 (Associataion Class) : Association 관계가고유의속성이나오퍼 레이션이필요할경우에정의 ii. Object Diagram 오브젝트다이어그램은오브젝트를대상으로한그림이다. 모델의 어느일순간 을파악해서파악시점의오브젝트구조를나타내며오브젝트와오브젝트간의관계를나타낸다. UML 1.x에서는클래스다이어그램의일부분이어서제대로정의되지않다가 UML 2.0부터정식다이어그램이되었다.
구성요소오브젝트는인스턴스를나타내며클래스표기와비슷하지만속성만나타낼수있고메소드는나타낼수없다. 링크는오브젝트간접속을나타내며클래스다이어그램에서는연관이나의존관계에해당하지만, 링크만으로는어떤오브젝트에속하는지알수없다. 그래서스테레오타비을붙여링크의종류를나타낼수도있다. 스테레오타입은링크의종류를나타낸다. 역할명은링크에부여하는것으로오브젝트가다이어그램내에서어떤역할을담당하는지를나타낸다. 오브젝트다이어그램은객체지향에서필요한 오브젝트 를직접나타낼수있는다이어그램이기때문에제대로작성할수있는지에따라, 객체지향에대해얼마나잘이해하고있는지를판단할수있다. iii. Component Diagram 컴포넌트는교환가능한시스템의구성부품중의하나로, 내부에구현을포함
하고외부에인터페이스를공개하고있는것이며 1개의컴포넌트는 1개이상의클래스, 인터페이스, 컴포넌트로구성되어있다. 객체지향개발에서는전체시스템의클래스들을기능적인연관성을고려하여결합력이강한클래스들을그룹으로묶어새로운단위의하위시스템을구성할수있고이것을컴포넌트라고한다. 컴포넌트에서의인터페이스 : 인터페이스는컴포넌트가외부에공개하고있 는것이고컴포넌트가제공할기능에대한명세이며컴포넌트의오퍼레이션 은그컴포넌트의인터페이스를통해서만사용할수있다. 컴포넌트의장점 : 기존의함수, 클래스등에비해큰규모이기때문에재사용을하는경우효과가더커지게되고매우강한수준의정보은닉개념을지원한다. 그리고기존컴포넌트를수정하는것이아니라새로운컴포넌트로대체하는것도가능하다. 컴포넌트다이어그램은물리적인것을모델링하기위한다이어그램이며기 본설계및상세설계단계에서작성하며컴포넌트사이의관계를나타내기 위한다이어그램이다. iv. Composite Diagram 컴포지트다이어그램은구성요소들간의계층적연관관계를보여주는다이어그램으로써한구성요소가어떠한내부구조를가지고있는지, 각내부구조의구성요소들이어떠한연관관계를가지면서계층구조를형성하는지등을정의한다. 컴포지트다이어그램에서, 포트는클래스와환경간의또는클래스와내부파트간의상호작용지점을정의한다. 포트를사용하여클래스가제공하고환경에서필요로하는서비스를지정할수있다. v. Package Diagram 패키지다이어그램은클래스와같은여러모델요소들을그륩화시킬수있는수단이고패키지내에다른패키지를포함할수있다. 모든구성요소는단지하나의패키지에만포함될수있고각패키지는하나의네임스페이스를구성하고이의미는두개의모델요소가각기다른패키지에속한다고할때이들이동일한이름을갖는것을허용한다는것을뜻한다. 패키지를제거하면패키지내모델요소도함께제거된다.
vi. Deployment Diagram 디플로이먼트다이어그램은실제시스템의물리적인모습을보여주는다이어그 램으로써시스템을구성할때각구성요소를물리적으로어떻게배치할것인가 를정의한다. 동적모델은인터액션, 인터액션행위, 인터액션내행위로나뉘며시퀀스타이밍커뮤니케이션인터액션액티비티스테이트머신이렇게 6가지로나뉘게된다. vii. Sequence Diagram 시퀀스다이어그램은해결해야할문제가주어진상황에서그문제를해결하기 위해필요한객체를정의하고객체간의동적인상호관계를시간순서에따라정
의함으로써주어진문제를해결한다. 시퀀스다이어그램은어떻게하기로정의된것을실제로그렇게되도록실현하는것이다. 시퀀스다이어그램의수직방향은시간흐름을나타내고수평방향은상호작용을하는객체들을위치하고시간개념이중시되고시간이위쪽에서아래쪽으로증가하는것을전제로하기때문에아래쪽에표현된메시지는위족의메시지보다나중에발생했음을알수있다. 다이어그램의상호작용을유발하는객체는왼쪽에위치시키고종속적인객체는오른쪽에위치시킨다. 시퀀스다이어그램은클래스다이어그램을검증하고객체의오퍼레이션과속성 을상세히정의하고유즈케이스를실현하고프로그래밍사양을정의한다. viii. Timing Diagram 시퀀스다이어그램과스테이트머신다이어그램을합쳐놓은다이어그램으로써 시간에따른각객체의상태와그상태를변경시키는방아쇠역할을하는메시 지를정의한다. ix. Comunication Diagram 커뮤니케이션다이어그램은상호작용다이어그램의일종으로여러객체 / 컴포넌트들사이의상호작용을표현하기위해사용하고관계를명시적으로표현한다. 상호작용에참여하는객체 / 컴포넌트간의관계유무를표현 / 파악한다. 시스템클래스를파악한후, 객체들간에발생할상호작용을나타내기위한것과복잡한형태를가진오퍼레이션의실현을나타내기의해작성한다.
x. Interaction Diagram 인터액션다이어그램은시스템의동적인측면을모델링하는데사용되어서시스템이어떻게수행되는지시각화하는도움을준다. 객체의잡합이액터와어떻게인터액션이이루어지는지나타내는것이목적이다. xi. Activity Diagram 액티비티다이어그램은시스템영역에서다양하게존재하는각종처리로직이나조건에따른처리흐름을순서에따라저의한모델이다. 활동과활동간의제어의흐름을보여주는흐름도이다. 하나의활동에서다음활동으로순서가바뀌면서처리되는과정을표현하기때문에순서 / 분기 / 처리절차의표현을필요로하는대상에대해제한없이적용이가능하다.
xii. 스테이트머신다이어그램 스테이트머신다이어그램은상태를나타내기위한다이어그램으로대상이어떠 한상태인지찾아내서각각의상태에대해할수있는것과할수없는것을명 확히하고, 상태가어떠한이벤트에의해변해가는지나타내는것이다. 상태는개시상태, 종료상태, 상태, 상태이동, 평행상태, 이력상태, 포크, 조인등이 있다. 개시상태 : 상태이동의시작지점이며시작시의상태이동은시스템부팅 이나오브젝트생성을나타내고개시상태는스테이트머신다이어그램안 에서반드시 1 개는있어야한다. 종료상태 : 상태이동의종료지점으로종료로의상태이동은시스템정지 나오브젝트소멸을나타내고종료상태에서는상태이동은없고생략가능 하다.
상태 : 대상의라이프사이를 ( 발생부터소멸까지 ) 안의어떤상황을나타내며 상태안에는액션이나내부이동을정의할수있다. 상태이동 : 상태에서상태로의이동을나타내고지정된이벤트가발생했을 때상태가이동한다. 평행상태 : 상태안에는여러개의상태이동을정의할수있고상태안에상태이동을포함한상태를혼합상태, 포함되어있는상태를서브상태라한다. 혼합상태에서여러개가동시에동작하는상태이동을평행상태라고한다. 평행상태에있는서브상태들의상태이동은독립적으로일어난다. 이력상태 : 혼합상태에서다른상태로이동한후, 다시혼합상태로되돌 아왔을때어떤서브상태에있었는지저장한다. 포크 : 상태이동을분리 조인 : 머지, 포크된이동이전부종료할때까지기다린다. xiii. Use Case Diagram 유즈케이스다이어그램은개발자가아닌사용자입장에서시스템을보았을때, 시스템이제공해야할기능을나타내야한고모든요구사항을만족하는지를확 인하기위해사용한다. 액터액터는시스템의외부에존재하면서시스템과상호작용을하는모든것 ( 사람, 기계, 다른시스템 ) 이며사람심볼로표시하며액터명은단일명사를사용한다. Use Case 유즈케이스는액터의요구에의해시스템이어떻게사용될것인가를표현하고고객의입장에서본기능적인요구사항을나타내고그자체로완전하고하나의의미를갖는업무처리단위이다.
유즈케이스의관계 연관관계 (Association) : 상호작용하는액터와유즈케이스간의관계를 표현하고액터는하나이상의유즈케이스와연관될수있으며유즈케 이스또한하나이상의액터와연관될수있다. 확장 (Extend) 선택적인행위관계이며, 어떤특수한조건에서만수행된다. 수행순서는 화살표반대방향으로발생한다. : 포함 (Include) 필수적인행위관계, 수행순서는화살표방향으로발생하며하나의유 즈케이스가다른유즈케이스를반드시수행하는경우에사용된다.
4. UML Tools A. Star UML 국내소프트웨어업체인 Plastic Software 에서개발된 Plastic 에서유래되었다. i. 장점 StarUML 은빠르고, 유연하고확장가능하며풍부한기능을제공한다. 한국기업에서만든 UML 도구이며, 라이선스가무료라쉽게사용이가능하 다. 또한수업에서의요구조건인 Java Code Generation 을충족가능하다. StarUML 은총 11 가지의다양한종류의다이어그램을제공한다. 무료 UML 도구로서보급률이높기때문에관련자료를찾기용이하다. 한글매뉴얼을제공하고있어, 사용법을쉽게익힐수있다. UI 가단순하고직관적이어서쉽게익힐수있다.
ii. 단점 Java 연동하기위해 Plug in 을따로설치해야한다.
< Class Diagram 작성후 Java 코드로변환 >
< Use Case Diagram 예시 > B. Amateras UML i. 장점 Eclipse Plug-in 으로해당 URL 에서다운받아쉽게설치할수있다. activity diagram, class diagram, sequence diagram, use case diagram 을무료 로지원한다. diagram 을수정가능하고수정한내용이코드에영향을준다. 개발완료후, 추가작업시에도편리하게사용할수있다. Class Diagram 을작성했을때초기개발단계에서시간과비용을절약할수 있다. ii. 단점 private, public 와같은접근자나자료형이기본세팅되어있어서 Export 를 통해코드화를시킨후에수정해야하는번거로움이있다. < 간단한 Diagram 을작성해본화면 >
< Diagram 를 Export 하여코드화 > < 간단한 UseCase Diagram 작성한화면 >
< 간단한 Sequence Diagram 작성한화면 > C. Object Aid UML i. 장점 Eclipse Plug-in 으로해당 URL 에서다운받아쉽게설치할수있다. 가볍고빠르며가독성이높다. class diagram( 무료 ) 과 sequence diagram( 유료 ) 을지원한다. ii. 단점 자바파일에의존도가높다.
diagram 을수정할수없다. iii. 사용방법 Package Explorer 에서자바파일을선택하여화면으로드래그 & 드롭한다. < 작성한코드로 Diagram 생성한화면 > D. Omondo Eclipse Plug-in 유료판과무료판이있다.
E. Rational Rose Rational 사에서출시한 UML Tool 가장강력하고많은기능을제공하여많이사용되고있지만비용이상당하기때문에조사에서배제하였다. 5. Conclusion 여러가지 UML들의특징들을조사해보고장단점을비교해본결과, 빠르고가벼운 Star UML을사용하기로결정했습니다. 비교적단기간에소규모의프로그램을개발하는것이고, UML을처음사용해보기때문에자세한설명과관련자료가많은 Star UML을사용하는것이좋을것이라고판단했습니다. 6. Reference A. Wikipedia Dictionary