< 소프트웨어모델링및분석 > - UML 보고서 조원 : 200611525 홍준택 200711441 신재용 200711470 정재호 200710115 김철웅
UML 의역사 UML 은 'Unified Modeling Language' 의약자입니다. 무엇을통합했기에 'Unified' 라는말이붙게된것일까요? 먼저, UML 의역사를간단히살펴보면아래그림과같습니다. 객체지향적분석과디자인에대해다양한방면으로실험적인접근을하던방법론자들에의해서다양한객체지향모델링방법이등장하게됩니다. 그중에서도 Booch 의 Booch 방법론, Rumbaugh 의 OMT(Object Modeling Technique) 와 Jacobson 의 OOSE(Object-Oriented Software Engineering) 방법론이유명했습니다. 이렇게많은방법론이존재하다보니, 서로다른방법론을사용하는조직간에모델정보를공유하기위해선각조직에서사용하는방법론의표현기호를익히고이해해야했습니다. 상황이이렇다보니모델을표현하기위한동일한표현기호, 동일한모델링언어를사용하는것에대한필요성을느끼게됩니다. UML 개발은 1994 년후반에 Rational 사의 Grady Booch 와 Jim Rumbaught 에의해그들의방법론인 Booch 와 OMT 의통합으로시작되었습니다. 1995 년가을 Ivar Jachobson 이소속된회사 Objectory 와 Rational 이합병되면서통합의노력이있었고이에 Jacobson 의 OOSE 방법론이통합되었습니다.
Booch, Rumbaugh, Jacobson 되었습니다. 은다음의세가지이유로통합된모델링언어를만들게 1. 각각의방법론들이이미각자독립적인발전을하고있었다. 각방법론에서사용자에게 혼란을일으킬불필요한부분을제거하고통합하여같이발전시키는것이이치에맞았다. 2. 완벽한의미와표기의통일로써안정된객체지향시장을형성할수있다. 또한프로젝트에완벽한모델링언어를제공하고모델링언어를지원하는툴들에게더나은특징을제공할수 있게된다. 3. 각자의방법론이서로보완하여더나은발전을이룰수있고각자의방법론이해결할수없는문제를해결할수있도록도와준다. 이들세사람은모델링언어를통합하기위해다음의목표를두고노력을기울였습니다. 1. 객체지향개념을이용하여소프트웨어영역뿐만아니라시스템영역도모델링할수있게한다. 2. 실행가능하거나개념적인산출물들을명확하게결합할수있게한다. 3. 사람과기계에모두유용한모델링언어를만든다. 세사람의노력으로 1996 년 6 월에 UML0.9 문서가공개되었으며, UML 협의회를설립하여강력하고완전한 UML 을정의하기위한행보를진행하게됩니다. UML 1.0 을정의하는일에기여한협력업체로는 HP, I-Logix, Intelicop, IBM, Oracle, Microsoft 등등이있습니다. UML1.0 문서는 1997 년 1 월 OMG 에표준안으로제출되게되고, UML1.1 로개정하여 1997 년 9 월 OMG 에서표준안으로채택되게됩니다.
UML 소개 1. 소개 UML(Unified Modeling Language) - 설계를위한모델링언어. ( 프로그래밍언어는실제구현을위한언어 ) 모델을표현하기위한도구와기법의집합. 개발설계물을이해하기쉽고, 표준적으로나타내어다른사람과효율적으로공유할수있다. 2. 주요 ' 다이어그램 ' 의종류 1) Class Diagram ( 클래스다이어그램 ) : 시스템의논리적및물리적설계를나타내는데주로이용된다. 시스템과그구조에대해나타내고그사이에존재하는정적인것을나타냄 2) Object diagram ( 개체다이어그램 ) : 시스템내의객체들의관계를보여주며특정시점의시스템의스냅샷을나타냄 3) Use-case Diagram ( 유스케이스다이어그램 ) : 시스템이구현할업무 ( 쓰임새 ) 프로세스, 시스템의동작방법을나타냄. 4) Statechart Diagram ( 상태다이어그램 ) : 개체의상태와상태들사이의전이, 이벤트등을나타냄. 5) Sequence Diagram ( 시퀀스다이어그램 ) : 시스템의서로다른개체들사이의전달되는메시지들에대한시간순서를나타냄. 6) Activity Diagram ( 활동다이어그램 ) : 시스템내업무프로세스들의활동흐름을표현 7) Collaboration Diagram ( 협력다이어그램 ) : 시스템의서로다른개체들이어떻게협력하고정보를교류하는지를나타냄. 8) Component Diagram ( 컴포넌트다이어그램 ) : 구현되는시스템과시스템내부의구성원들간의의존관계를나타냄. 9) Deployment Diagram ( 배치다이어그램 ) : 특정한실행시점의물리적시스템의아키텍쳐를표현.
3. UML 표기 (UML 요소 ) 1) 클래스 2) 관계
4. 클래스다이어그램만들기 1) 클래스만들기 StarUML 을실행하면왼쪽에다음과같은 Toolbox 가나타난다. 클래스를만들고자할때는빨간색동그라미부분을클릭후오른쪽의빈화면을클릭해주면그림에서와같이노란색박스가생기는데이것이클래스다. 2) 클래스편집클래스를더블클릭하면다음과같이된다. 1 번은 public, private 등을설정할수있는부분이고, 2 번은 Class 이름을변경할수있는부분이다. 3 번은클래스내의변수를만드는부분이다. 4 번은클래스내의함수를만드는부분이다.
3) 상속 Person Student Professor Person 클래스는 Student, Professor 클래스의부모클래스이다. 상속표현을나타내기위해위와같은화살표를사용하는데왼쪽 Toolbox 에있는빨간색동그라미부분을클릭하여 Student 또는 Professor 에서 Person 클래스로드래그해주면된다. 4) 제휴관계 Flight +assinged filght +assigned plane Plane 0..* 0..1 제휴는두클래스간의연결이다. 양방향제휴와일방향제휴가있다. 먼저양방향제휴를나타낼때는 Toolbox 에서빨간색동그라미에서 Association 을클릭후드래그하면된다. 일방향제휴의경우두클래스가관계가있지만한쪽에서만인식이되는경우로밑에있는 DirectedAssociation 을클릭후인식이되는부분쪽으로드래그하면된다. 연결선의양쪽끝을더블클릭하면다음과같은창이나온다. 0..1, 0..* 이러한값들이나오는데이것을 Multiplicity 값이라고 한다. 그뜻은오른쪽에있는표에정리되어있다.
5) 인터페이스 인터페이스를만들때는빨간색동그라미부분을선택후오른쪽에클릭하면된다. 이때마우스우클릭후 Format->Stereotype Display 를선택하면클래스모양과동일한 Textual, 동그란모양의 Iconic 등을선택할수있다. 변수를추가하고함수를추가하는기능은앞서설명한클래스에서와동일하다. 다음과같은클래스다이어그램이있다. <<interface>> Vehicle +startup +ChangeGear +Foward() +Left() +Right() +Stop() 3 2 1 Driver Car Wheel
Interface 와클래스를생성후 Toolbox 의빨간색사각박스가그려진부분을이용해드래그하여만들면된다. 위예제를살펴보면 1 번은 Realization 으로현실화이다. 즉 Car 클래스가 Vehicle Interface 를구현한다라는뜻이다. 2 번은 Dependency. Driver 클래스는 Vehicle Interface 를사용하기때문에의존적이라는뜻이다. 3 번은 Aggregation 과 Composition 이다. 빈마름모와검은색마름모인데두가지의차이점은그 클래스가릴리즈되는시점이다. Composition 의경우소유하는클래스가죽을때소유당하는 클래스가같이죽지만 Aggregaton 의경우에는소유하는클래스가죽을때소유당하는녀석들이 같이죽지않는다는차이점이있다. 5. Use case 다어이그램이란? - 시스템이제공하는기능및그와관련한외부요소 ( 유저나외부시스템 ) 를표시한다. 일반적으로시스템개발초기에유저가 [ -- 기능을원한다 ] 고하는요구를표현할때에사용한다. 1) 유스케이스 (usecase) 유스케이스유저등시스템외부에서본시스템의기능을표시한다. 표기법타원으로표시하고, 그안쪽혹은아래쪽에유스케이스이름을기술한다. 유스케이스이름은 [ 예약한다 ] 혹은 [ 등록한다 ] 와같이동사로기술한다. 샘플 2) 액터 (Actor) 액터란 어떤시스템을중심으로보았을때, 거기에관련한모든외부요소를표현한다. 구체적으로는그시스템의유저나연계되어있는외부시스템이여기에해당한다. 표기볍 원과선을조합하여그린사람모양으표현하고, 그밑에액터의이름을기술한다. 사람을액터로표시하는경우, 유저의본명이아니라그유저의역활을액터명으로정의한다.
샘플 3) 유스케이스와액터사이의관계 유스케이스와액터사이의관계란 시스템이제공하는기능과외부요소 ( 유저나외부시스템 ) 의관계를나타낸다. 표기법관련한액터와유스케이스사이에실선을그어표기한다. 샘플 4) 유스케이스사이의포함관계 (include)
유스케이스사이의포함관계란 시스템기능이별도의기능을포함한다고하는관계를표시한다. 표기법 포함하는쪽에서포함되는쪽으로점선으로된화살표를그리고, 스테레오타입 <<include>> 를함께표시한다. 샘플 5) 유스케이스사이의확장관계 (extend) 유스케이스사이의확장관계란 이미존재하는시스템기능에별도의기능이추가될수있는관계를나타낸다. 표기법 확장기능의유스케이스에서확장대상이되는베이스유스케이스쪽으로점선화살표를그어 관계를구분하고스테레오타입 <<extend>> 를함께표시한다. 확장하는유스케이스에는 확장포인트를기술할수있다. 확장포인트란확장한기능을사용하는특정포인트를가리킨다.
샘플 : 비디오테입을대여하는과정에서손님이회원이아니라면회원가입하는작업으로 extend 될수있다. 6) 유스케이스사이의일반화관계 (generalization) 유스케이스사이의일반화관계란 시스템기능사이에추상화혹은구체화관계가존재함을나타낸다. 표기법 구체적인유스케이스로부터추상적인유스케이스쪽으로머리모양이하얀색삼각형으로된 실선화살표를그어표기한다. 샘플
7) 액터사이의일반화관계 (generalization) 액터사이의일반화관게란 시스템외부요소 ( 유저, 외부시스템 ) 사이에추상화또는구체화의관계가존재함을 표시한다. 표기법 구체적인액터에서추상적인엑터쪽으로머리모양이흰색삼각형으로된실선화살표를 그어표기한다. 샘플
샘플. 유스케이스다이어그램을사용한간단한모델링 출처 : http://nell.springnote.com/pages http://blog.empas.com/mcm27xx/read.html?a=4052477