Software Modeling & Analysis Report #1 과목정보 학생정보 학교명건국대학교전공컴퓨터공학부 학기 2015 학년도 1 학기과목명 팀원 201011314 김민재 201011349 이규진 201011356 이종찬
Contents 1. UML 에대하여 1-1. UML 설명 1-1-1. UML 정의 1-1-2. UML 역사 1-1-3. UML 장, 단점 1-1-4. UML 목적 1-2. UML 의특징 1-3. UML 의구성요소 1-3-1. Things( 사물 ) 1-3-2. Relationship( 관계 ) 1-3-3. Diagram( 다이어그램 ) 2. UML 도구소개 2-1. Amateras UML 2-2. Star UML 2-3. Omnigraffle 2-4. Object Aid 2-5. MS Visio 3. UML 과모델링 3-1. 구조모델링 3-2. 행동모델링 3-3. 설계모델링 2
1. UML 에대하여 1-1. UML 설명 1-1-1. UML 정의 UML이란, unified modeling language의약어로객체지향분석과설계를위한모델링언어이다. UML을사용해서개발자들은시스템에대한사전모델을만들수있게되었다. 다양한프로그래밍작업을하게되면, 사람과사람사이의전체시스템에대한의사소통의불일치가있을수있는데이것을시각적이고직관적으로이해하기쉽게보여주는것이바로 UML이다. 따라서개발자간의의사소통이쉬워진다. UML 은프로그래밍언어가아니지만존재하는몇가지의추가도구를사용하여여러가지다른프 로그래밍언어로변환이가능하다. 그러므로 UML 은도식화된언어이며소프트웨어를만드는데긍정 적효과를제공한다. 1-1-2. UML 역사 UML 의역사를표현한그림이다. UML 은 1980 년대후반에서 1990 년대초반에개발된객체지향 개발방법에뿌리를두고있으며, 1990 년대중. 후반이후로빠른속도로발전하고있다. 1-1-3. UML 장단점 UML의장점은셀수없이많지만, 그장점중에큰범위로 3개를표현한다. 첫째, 팀구성원의의사소통효율의향상을이끌어낼수있다. 실제로프로젝트또는어떤일을진행하다보면, 의사소통으로소비되는시간이매우많다는것을알수있다. 특히조직또는팀구성원이많을수록의사소통시간이급격하게증가할것이다. UML은설계와디자인을겸비한도구이다. 모델링의장점은이해하기쉽고, 서로약속된표현법을활용하므로오해의소지가줄어든다. 이처럼 UML을활용하면, 의사소통시간을줄일수있고데이터모델을활용하면더욱좋다. 둘째, UML 은국제표준이다. 최근에는객체지향개발방법뿐만아니라다양한개발방법에서활용 3
하고있고, 설명서를 UML에기반을두어작성하고있다. 소프트웨어아키텍처패턴이나디자인패턴을소개하는문서를살펴볼때 UML을이해하지못하면해당패턴을이해하기가매우어려울수있다. 그러나 UML을정확히알고있다면, UML로작성된방대한정보에쉽게접근할수있고, 이정보를기반으로다양한아이디어를만들어낼수있을것이다. 마지막으로문서화가쉽다. 프로젝트를진행하다보면, 프로젝트일정과비용등으로문서화를진 행하는데어려움을느낄때가있을것이다. 하지만 UML 을사용하면모델링정보를쉽게접근할수 있고프로젝트를문서화할때훌륭한매개체가될수있다. 이처럼여러가지 UML의장점도있지만 UML을사용할때생각해야할고려사항도몇가지가있다. 첫째, UML을사용하는이유가명확해야한다. 프로젝트와관련된내용을고려한후, UML의도입방향을제시해야한다. 굳이사용하지도않을 UML을작성하면, 쓸데없이시간과비용을소비하게된다. 둘째, UML 다이어그램작성이쉽지않다. UML 다이어그램은모델링과정이므로다양한경험과숙련도가필요하다. UML을이해하고있는것과보는것그리고작성하는것은서로부분이라고볼수있다. 또한소비자들이요구하는요구사항을분석하여 UML에서제시하는다이어그램을모두효과적으로작성할수있는사람이드물다. 마지막으로 UML 활용방안의문제이다. 매우잘작성된 UML 다이어그램이라도프로젝트구성원이 UML 다이어그램을이해하지못하면빛좋은개살구일뿐이다. 기본적으로도구를활용하는데에는추가적으로비용이소비되는데어떤도구든지비용대비효율성을고려하여합당하다고인정될때사용하는것이합리적이다. 1-1-4. UML 의목적 UML 의최우선목적은아래와같다. l 사용자에게즉시사용가능하고표현력이강한시각적모델링언어를제공함으로써사용자는의미있는모델들을개발하고서로교환할수있다. l 핵심적인개념을확장할수있는확장성과특수화방법을제공한다. l 특정개발프로세스와언어에종속되지않는다. l 모델링언어를이해하기위한공식적인기초를제공한다. l 객체지향툴시장의성장을장려한다. UML은소프트웨어를모델링하기위한언어이다. 그렇지만반드시소프트웨어에국한되는것만은아니다. UML은시스템의모든분야를모델링할수있어야한다는목적으로탄생하였다. UML은소프트웨어뿐만아니라비즈니스모델링의영역도포함을한다. 그리고객체모델링에대한개념뿐만아니라데이터모델링 지도가능하게한다. 지금은 UML 스펙이발전하면서비즈니스모델링부분이 Business Process Modeling Notation 이라는별도의영역으로분할이되었고 UML은 Model Driven Architecture 사상으로더심화된모습으로전개되고있다. 비즈니스모델링부분은 CBD(Component Based Development), MDA(Model Driven Architecture), EA(Enterprise Architecture), SOA(Service Oriented Architecture) 등의트랜드가자리잡으면서비즈니스모델링의중요성이부각되어 UML을비즈니스모델링에적용하는것이활발해지면서그영역이점점넓어지고있다. 4
5
1-2. UML 의특징 UML의특징은크게 4가지로구분할수있다. l 가시화언어 l 명세화언어 l 구축언어 l 문서화언어 덧붙여설명하자면소프트웨어의개념모델을시각적인그래픽형태로작성, 표기법에있어서는 Symbol에명확한정의가존재하므로개발자사이에서원활한의사소통이가능하게해주는것이가시화언어이고, 명세화언어란정확하고명백하며, 완전한모델을만드는것을의미한다. UML은소프트웨어개발과정인분석, 설계, 구현단계의각과정에서필욯ㄴ모델을명세화할수있는언어이고, 구축언어는 UML로명세화된설계모델은 JAVA, C++, VB 등다양한언어의소스코드로변환하여구축할수있다. 반대로구축되어있는소스코드를 UML로변환하여분석하는 Reverse도가능하다. 문서화언어는시스템아키텍처와이에대한모든상세내역에대한문서화를다루며, 요구사항을표현하고시스템을테스트하는언어도제공한다. 6
1-3. UML 의구성요소 UML 의구성요소는위의그림과같으며 UML 의구성요소를 Thing( 사물 ), Relation( 관계 ), Diagram ( 다이어그램 ) 3 가지로크게나눌수있다. 1-3-1. Things( 사물 ) Thing( 사물 ) 에는 4 가지가있다. l l l l 구조사물 (Structural) 행동사물 (Behavioral) 그룹사물 (Grouping) 주해사물 (Annotational) 구조사물 (Structural) 은모델의정적인부분들을정의, 물리적, 개념적요소를표현한다. 하위요소 로클래스, 인터페이스, 통신, 유스케이스, 활성클래스, 컴포넌트, 노드 7 개의구조사물이있다. 구조사물형태정의 클래스 (Class) 이름, 속성, 오퍼레이션을 가지고있으며 직사각형으로표현한다. 7
인터페이스 (Interface) 클래스의외부적으로가시화되는요소의행동을표현, 특정클래스나컴포넌트의전체또는일부분만의행동 통신 (Communication) 유스케이스 (Use Case) 활성클래스 (Active Class) 컴포넌트 (Component) 노드 (Node) 객체들간에주고받는메시지시스템이수행하는순차적활동을기술해준다. 특정어플리케이션프로그램의상위메뉴구분과비슷하다. 하나이상의프로세스나쓰레드를갖는객체를파생하는클래스기술시스템의물리적이고대체가능한부분으로, DLL이나 EXE와같은물리적단위에해당함실행시에존재하는실제전산자원을의미하며, 대부분의경우자체적인메모리와처리능력을가진시스템을말한다. 행동사물 (Behavioral) 은 UML 모델의 동적인 부분으로 구성되어 있다. 하위 항목으로는 교류 (Interaction), 상태머신 (State Machine) 이있다. 행동사물 형태 정의 교류 (Interaction) 객체들간의주고받는메시지 상태머신 (State Machine) 상태의순서를지정하는 행동 그룹사물 (Grouping) 은 UML 모델의요소들을그룹화시켜준다. 하위요소로패키지 (Package) 가있 는데 UML 모델의요소들을그룹화메커니즘으로정의한것을말한다. 8
주해사물 (Annotation) 은모델을설명하는부분이다. 하위요소로는노트 (Note) 가있으며 UML 모델 의주석에해당하는것으로, 점선으로노트와설명할대상을연결한다. 9
1-3-2. Relationship( 관계 ) Relation( 관계 ) 에는 4 가지가존재한다. l l l l 의존 (Dependency) 연관 (Association) 일반화 (Generalization) 실체화 (realization) 관계형태정의 두사물간의의미적관계, 의존 (Dependency) 한쪽사물의변화가다른 사물에영향을주는관계 구조적관게로서객체간의 연결을나타냄, 집합 연관 (Association) 일반화 (Generalization) 연관관계는전체와부분간의구조적관계를표현하는특별한연관관계주로클래스간상속관계를표현하기위해사용 객체들사이의의미적관계, 인터페이스와인터페이스에 실체화 (realization) 오퍼레이션이나서비스를제공하는클래스나컴포넌트사이의관계를지정하기위해서사용 1-3-3. Diagram( 다이어그램 ) UML 의다이어그램은두가지유형이있다. 구성요소를표현하기위한구조적다이어그램 (Structural Diagram) 과행위를표현하기위한행위다 이어그램 (Behavioral Diagram) 이있다. UML 다이어그램 정의 모델의조립부품의집합. 클래스다이어그램클래스와관계에의해서구조적다이어그램 (Class Diagram) 구조와관계를표현한다. (Structural Diagram) 객체다이어그램 시스템을구성하는객체, (Object Diagram) 객체간의관계를표현 10
행위다이어그램 (Behavioral Diagram) 컴포넌트다이어그램 (Component Digram) 배치다이어그램 (Deployment Diagram) 유스케이스다이어그램 (Use Case Diagram) 순서다이어그램 (Sequence Diagram) 상호작용다이어그램 (Interaction overview Diagram) 상태다이어그램 (State Diagram) 액티비티다이어그램 (Activity Diagram) 소프트웨어-유닛간의의존관계를나타내는것으로, 소프트웨어모듈구성이나버전관리도표현할수있다. 객체나패키지, 파일등을실제플랫폼이나네트워크노드상의어디에배치할것인지, 그리고어느프로세스상에서실행할것이라는물리적인관점에서시스템구성을표현한다. 시스템의문맥과외부기능의설정상호작용하는객체의시간순서즉, 객체의집단메시지송신에대한시계열표현이다. 객체집단에서의상호작용에대한직접적표현이나객체집단의접속망의형태와메시지, 스레드의순서표현 1개의객체생성에서소멸까지상태. 즉어떤클래스에속하는객체의싸이클표현을제공한다. 1개의 Interaction 전체에서의순서제어플로우. 상태다이어그램의상대적표현으로서워크플로우에초점을맞춘다이어그램 이중에서중요하게생각되는 2 가지다이어그램을조금더자세하게서술한다. l l 클래스다이어그램 (Class Diagram) 순서다이어그램 (Sequence Diagram) 클래스다이어그램 (Class Diagram) 클래스다이어그램은시스템의정적인상태인논리적인구조를표현한다. Class, Interface, Collaboration 간의관계를나타내며, 객체지향개발에서가장공통적으로많이사용한다. 클래스다이어그램을구성하는것은클래스와관계이다. 11
클래스다이어그램은다음과같은특징을가진다. 가. 시스템의요구사항에표현된작업즉, 시스템이처리해야하는작업에대한책임을분할한다. 나. 모델은점점증가되며관련된클래스들끼리패키지화시킨다다. 클래스가너무작게쪼개거나기능을너무많이포함하면안되며적절한방법으로구현한다. 클래스다이어그램은시스템의정적설계도인 Class Diagram과시스템의프로세스도인 Active Class Diagram으로구분할수있다. 클래스를구성하는것은클래스명, 속성, 메소드이다. 모든클래스는다른클래스들과구별되는유 일한이름을갖는다. 클래스명은단순명과경로명두가지중하나를선택할수있다. 단순명은클래 스이름만표기하는방법이며, 경로명은패키지명을포함하여표기하는방식이다. 순서다이어그램 (Sequence Diagram) 순서다이어그램은인스턴스들이어떻게상호작용을하는지를묘사한다. 하나의협동-인스턴스집합에포함된인스턴스들상호간에주고받는자극들의집합인상호작용-인스턴스집합을직접적으로표현한다. 순서역할다이어그램은역할중심의관점을반영한반면, 순서다이어그램은인스턴스중심의관점을반영한것이다. 12
2. UML 도구소개 2-1. Amateras UML Amateras UML 은일본에서만든오픈소스 UML 도구로서 JAVA Eclipse 에서직접 Plug-in 으로 연결하여사용할수있는프로그램이다. Amateras Download Link : http://sourceforge.jp/projects/amateras/releases/ < Amateras UML Plug-in 실행모습 > Amateras UML 의장점은 Eclipse 에직접연동되어이클립스내에서 UML 을그린후해당 UML 을 토대로기본코드를자동으로생성할수있는기능이다. 이는실제로개발시편리함을제공할뿐만 아니라디자인한대로코드를작성하도록길라잡이역할을해준다. 13
Amateras UML 을이용하여 Elipse 내에서 Class Diagram 을그린모습, Amateras 는 Class Diagram, Activity Diagram, Sequence Diagram, Use-Case Diagram 기능을제공한다. 하지만직접사용해본결과 Amateras는안정성에문제가존재하였다. 저장시에문제가발생하면어떤경고도없이통째로 Diagram이날아가버리거나 Diagram 수정시에하나를고치면다른변수명이나자료형이마음대로바뀌는버그도존재하였다. 물론프리웨어이므로완벽함을바랄수없는것이사실이므로어느정도는감안할수있는사항이다. < Amateras UML 의 Use-case Diagram > 14
2-2. Star UML (ver 2.0) Star UML 은한국개발자들이만든 UML 도구이며부분프리웨어이다. ( 실행시구입을권장하는 문구가뜨지만구입하지않아도무기한사용가능하다 ) Star UML 은그전에도좋은평가를받아왔지 만 2014 년 Star UML 2 를개발하면서더깔끔한인터페이스와강력한기능들이추가되었다. < Star UML 2 로 Class Diagram 을그린모습 > Star UML 2는 Amateras UML과달리이클립스의플러그인으로직접탑재되어지지는않지만 Extension Manager라는기능을통해서 PHP, XML, JAVA, C#, C++ 과연동하여사용할수있다. 예를들어 JAVA의경우, UML을코드로 Generate하는기능을이용하면작성한 Class들의기본코드가생성되어쉽게사용할수있다. 같은프리웨어툴인아마테라스와비교했을때 Code Generate 기능에깔끔하고편리한 UI까지얹은 Star UML이한수위라고표현할수있다. 하지만한가지의문점은 Interface 와 Interface Realization 표기방법이기존 UML 툴들과다르다 는것이다. 이렇게하도록한이유는잘모르겠지만, Star UML 로작성한 Class Diagram 을처음접 하는제 3 자가보았을때혼돈을줄수있을것으로생각된다. 15
< Star UML 에서 Generate 한코드를이클립스에서실행한모습 > 2-3. Omnigraffle Omnigraffle은매킨토시와 ios를위한프로그램으로유료프로그램이다. 따라서직접사용해보진못했지만전문 UML Tool이라기보다는회의나여러가지도형을이용한시각화를필요로할때사용하는 Tool이다. 따라서전문적인 UML Tool은아니므로실제 Class Diagram을작성할때에는불편함이있을수있다. ( 실제로옴니그라플을사용하여 UML을그릴때불편하다는리뷰를어렵지않게찾을수있었다 ) 하지만사용하기편리하고직관적인인터페이스는옴니그라플의큰장점이다. < Omigraffle 실행화면 > 16
2-4. Object Aid (http://www.objectaid.com/home) Object Aid는 Amateras UML과마찬가지로이클립스의플러그인중하나이다. 하지만기능은아주다르다. Amateras UML의경우직접 Diagram들을편집한후코드화하는용도로쓰이지만, Object Aid는반대로진행중이거나완성된프로젝트의코드를가지고거꾸로 UML Diagram으로만들어주는역할을한다. 다른도구들과역할이다르므로장단점을비교할수는없지만다른오픈소스프로젝트들의설계를참고하거나 UML에관하여공부할때많은도움을줄수있는도구이다. Class 파일를드래그앤드롭하면 Class Diagram 으로변환하여보여준다. 17
2-5. MS Visio (http://office.microsoft.com/ko-kr/visio/) Microsoft에서제작한다이어그램전용유료프로그램이다. 다양한다이어그램템플릿과편리한기능들을제공하고있으며벡터그래픽을사용하여그림을확대해도깨지거나손상되지않는다. UML 작성외에도여러가지정보를빠르게시각화할수있다는점에서비즈니스도구로써매우활용도가높다. < MS Visio 를통해그린 Class Diagram > 18
3. UML 과모델링방법론 모델링이란, 모델을만드는일 ( 추상화 ) 로써품질이좋은소프트웨어를개발및배치할수있게하는모든 활동의중심이다. 모델구축을통해개발대상시스템에대한이해를증진시킬수있다. UML 에서모델간의구분을하는것은굉장히중요하다. 서로다른 UML 모델타입은서로다른다이어그 램을사용하기때문이다. UML 모델링은다음과같은주요요소들이있다. 3-1. 구조모델링 (Structural Modeling) 구조모델링은시스템의전반적인구성뼈대를잡아주는역할을한다. 구조모델링은다음과같은다이어그램 들로이루어진다. 3-1-1. Class Diagram 클래스다이어그램 (Class Diagram) 은시스템의정적인상태인논리적인구조 ( 클래스 ) 를표현한다. Class, Interface, Collaboration 간의관계를나타내며, 객체지향개발에서널리사용되고있다. 클래스 다이어그램은클래스와관계로이루어진다. * 특징및주의점 1) 시스템요구사항에명시된작업, 즉시스템이처리해야하는작업에대한클래스간의역할을명시해준다. 2) 시스템의규모에따라점점커지게되며, 클래스들을묶어패키지화할수있다. 3) 클래스를너무작게표현하거나기능을너무많이포함하면효율적이지않으므로적절하게나누어야한다. * 클래스다이어그램의구성요소 1) 클래스 (Class) 클래스를구성하는것은클래스명, 속성, 메소드이다. 모든클래스는다른클래스들과구별되는유일한이름을갖는다. 클래스명은단순명과경로명두가지중하나를선택할수있다. 단순명은클래스의이름만표기하는방식이며, 경로명은패키지명까지포함하여표기하는방식이다. 속성은의미있는명사형으로표현한다. Visibility Name: Type= Default Value + variablename: byte Visibility 는접근제한자를나타내며표기법은다음과같다. 표기법접근제한자 + public - private # protection 메소드는의미있는동사형으로표현하며표기법은다음과같다. 19
Visibility Name(Parameter-List): Return-Type expression 예 )+ methodname (int param): int 클래스표기법에는스테레오타입 (Stereo-Type) 을붙일수있는데, 스테레오타입이란 UML 의한 정된모델요소를가지고새로운어휘를표현하기위한방법이다. 메소드명위에아래의예처럼스테레 오타입을붙이면해당메소드는생성자라는것을표기하는것이다. << constructor >> 이런방법으로클래스명위에인터페이스나추상클래스임을나타낼수있다. 2) 관계 (Relationship) 관계는모델요소간의논리적또는물리적인연결을의미하며, 여러객체의유기적인관계를통 해시스템이실행된다. 1. 의존관계 (Dependency) 'Using' 관계를나타내며, 하나의모델요소가다른모델요소를사용하는관계를말한다. 사용되는모델요소가변경되면사용하는요소가영향을받지만, 역은성립되지않는다. UML 표기법은점선으로된화살표로표현합니다. 화살표의방향은사용하는쪽에서사용되는쪽으로향한다. 예제는프로그래머클래스가사용하는쪽이고컴퓨터클래스가사용되는쪽이다. 사용되는클래스 가사용하는클래스의메소드파라미터로사용되는경우, 사용되는클래스가사용하는클래스의메소드 로컬변수로사용되는경우, 사용되는클래스가사용하는클래스의전역변수로사용되는경우이다. 의존관계는 has a 관계를가지는클래스들간에변수나, 메소드의파라미터의사용을가지는클 래스의관계를표시한다. 2, 일반화 (Generalization) 여러클래스가가진공통적인특징을추출하여공통적인클래스를일반화시키는것을의미하며, 반드시클래스간의 'is a' 관계이어야합니다. 객체지향의상속관계를의미한다. 20
추상클래스 (Abstract) 는이탤릭체나스테레오타입으로표시한다. 3. 연관관계 (Association) 클래스로부터생성된인스턴스들간의관계를표현한다. 의존관계와일반화관계는단순히클래스들간의관계를나타내며, Classifire로부터생성된인스턴스사이의관계를나타낸다. 상대방의인스턴스를가리킬수있는속성을가지며, 참조할수있는속성은 UML 상에서표현하지않는다. 표현하고자할경우 Role name을사용한다. 연관관계가가리킬수있는방향의종류는양방향과단방향이있다. 4. 집합연관관계 (Aggregation) 전체와부분을나타내는모델요소 (whole-part) 로전체를나타내는클래스와이를이루고있 는부분클래스의관계를나타낸다. 'has a' 관계를나타내며집합연관관계는전체와부분은서로 독립적인관계를나타낸다. 5. 복합연관관계 (Composition) 전체와부분을나타내며 (Whole-part), 젠체를나타내는클래스와이를이루고있는부분클 래스관계를나타낸다. 연관관계를맺고있는클래스는생명주기기같다. 'has a' 관계이다. 21
6. 실체화, 권력화 (Realization) 인터페이스는컴포넌트간의결합력을느슨하게한다.(Loose Coupling) 인터페이스는프로그 램의수정없이쉽게소프트웨어를확장할수있다. 클래스다이어그램 UML 작성시주의점 1. 클래스다이어그램은 'is a' 관계를나타냅니다. 2. 일반화관계는균형있게유지해야합니다. 3. 선들이교차하지않도록주의해야합니다. 4. 이해하기쉬운정도로간략하게표시합니다. 5. 관련있는클래스들은가까운곳에배치합니다. 3-1-2. Objects Diagram 객체다이어그램은객체를대상으로한그램이다. 모델의 어느일부분 을파악하여해당시점의 객체구조를나타낸다. 객체지향시스템에존재하는클래스, 클래스안의필드, 메소드, 서로협력하거나 상속하는클래스사이의연결관계를표현하는다이어그램이다. 3-1-2. Deployment Diagram 시스템을구성하는소프트웨어와하드웨어와의관계를표현한다. 물리적인시스템의구조를 표현하며네트워크를사용하는분산컴퓨팅환경을모델링할때사용하면유용한다. Deployment 다이어그램은물리적인표현은노드 (Node) 를이용하며, 노드의종류는프로세 스 (Processor) 와장치 (Device) 로구성된다. 프로세스는컴포넌트실행기능을말하며, 장치는시스템 22
과외부장치와의연결에사용한다. 3-1-3. Package Diagram 시스템을이해하기위한목적으로추상적인개념들을모은하나의그룹을패키지라고한다. 패키지는요소들을그룹으로조직하기위한범용메커니즘으로모델의요소들을조직하고이해할수있도록해준다. 패키지에담기는것은비단클래스에만국한되는것은아니며, Use Case, 활동다이어그램등과같은것들도담을수있고, 다른패키지들도담을수있다. 패키지내부의모든클래스들은개념적, 기능적, 변화적, 관리적측면에서유사한면을가지며, 하 나의패키지는적절한수의클래스를포함한다. 또한하나의패키지내부의클래스들은밀접한관련성을 가진다. ( 높은응집도 ) 다른패키지의클래스들과는약한의존관계가있다. ( 낮은결합도 - : 서로독립적이다 ) 그리고패 키지는순환의존관계는올바르지않는구조를가지지않아야하며, 패키지다이어그램은패키지와관계 라는두가지요소로표현한다. 패키지는탭이달린폴더모양으로표현한다. 단순표기법은패키지안에이름만을표기하며, 확장 표기법은내부에클래스까지표현한다. 있다. 패키지는클래스를직접포함하거나, 이름만명시하거나, 경로를표시하거나, 패키지를포함할수 3-1-4. Composite Structure Diagram 복합구조다이어그램은컴포넌트의내부구조를표현하는데사용한다. 파트, 포트, 연결자동의 개념을이용하여컴포넌트가실현, 이용하는인터페이스와내부구성요소간의관계를표현한다. 3-1-5. Component Diagram 시스템의논리적인요소를물리적인요소로표현한다. 한개이상의클래스를구현하여하나의컴 포넌트를만들수있다. 컴파일될소스코드파일의관계등을표현한다. 실행파일, 동적링크라이브러 리 (DLL), 문서들을표현한다. 작성된컴포넌트를언제든지재사용할목적, 문서작업을원할하게하기위해, 개발자에게작업 구조를구체적으로이해시키기위해사용한다. 구조모델링은시스템을위한뼈대를나타내며, 그뼈대에서각구성요소들이어느곳에위치하는지를보 여준다. 그래서 Class 다이어그램, Component 다이어그램, Deployment 다이어그램은구조모델링의일부 분에속한다. 이다이어그램들은구성요소들과메커니즘이어떻게관련되는지를보여준다. 하지만구조모델링은시스템이어떻게작동하는지에대해서는보여줄수없다. 보통은 Class Diagram 이 구조모델링에서많이쓰인다. 23
2) 행동모델링 (Behavioral Modeling) 행동모델링은시스템에서어떤상호작용이일어나는지를보여준다. 행동모델링은구조모델링에서보여줄수없는, 각구성요소들이서로간에어떤상호작용이일어나는지를나타낸다. 즉, 시스템의전체적흐름을보여주는것이다. 행동모델링은다음과같은다이어그램들로이루어진다. 2-1) Activity Diagram 많은프로젝트에서요구사항분석의일부로서사용자들의작업흐름을모델화하고분석하는작업이필요하다. 우리가원하는것은동시에일어나도되는것은어떤것이고, 엄격한순서에따라일어나야하는것은어떤것인지찾아내는것이다. UML 활동다이어그램같은표기법을사용해서사용자들이기술해준작업흐름을기록하는것이한방법이다. 활동 (Activity) 다이어그램은논리적인처리과정이있는모든대상을상대로그려질수있다. 특히비즈니스를돕는소프트웨어일경우비즈니스도메인에대한이해가무엇보다도중요하다. 시퀀스에서는객체간의메시지를이용한상호연동 ( 교류 ) 을시간의흐름에따라상세히기술하는반면활동다이어그램에서는객체간의교류는관심이없다. 처리과정 ( 활동 ) 이중요할뿐이다. 이다이어그램에서는처리과정에포함되어질소시지모양의 ' 활동 ' 과마름모모양의 ' 조건 ' 둥근모양의 ' 시작점 ', ' 종료점 ' 그리고긴얇은직사각형모양의 ' 동시경로 ' 로구성되어있다. 아래로향하는화살표는 진행과정 ( 방향 ) 을나타낸다. 24
* 구성요소 1 Things * Activity : 행위나작업 ( 내부적으로구조를가지는단위 ) ex) 상품조회, 구매결정, 결재내용입력, 결재자지정... * Initial State : * Final State : * Decision(Branch) : * Synchronization bar : 병렬처리절차가시작되거나모이는지점 25
ex) 2 Relationship * Transition( 전이 ) : 하나의액티비티가행위를완료하고다른액티비티로처리순서가옮겨 지는제어흐름표현 3 Swim lane : 하나의처리를구분지음. 26
* 사례 1 SCM 시스템의일반정보에대한 Role 액티비티다이어그램 모든사용자에게일반정보를제공했던것을등록여부와거래품목등록여부확인후 등록된사용자에게만일반정보제공. 27
2 프리즘에서유지보수절차프로세스를정의한액티비티다이어그램 2-2) Interaction Diagram 상호작용다이어그램은오브젝트간에주고받는메시지의교환을모델화하는것이다. 이러한상호작용다이어그램은 2개의다이어그램을포함하는데, 시퀀스다이어그램과협력다이어그램이다. 2개의다이어그램의외형은다르나기본적인기술방법은같다. 실제로몇몇 UML툴에서는상호다이어그램이컨버팅가능하도록기능을제공한다. < 시퀀스다이어그램 > 28
< 협력다이어그램 > * 구성요소 오브젝트 " 오브젝트 : 클래스명 " 이라고표기하며오브젝트다이어그램에서사용되는표기와동일하다, 메시지 어떤오브젝트가갖고있는메소드의실행명령을의미합니다. 메세지포맷은아래와같다. 시퀀스번호 [ 가드조건 ]*[ 반복조건 ] : 리턴값리스트 := 메시지명 ( 파라미터리스트 ) 메시지예 : [a==b] method("hello", 5) 메시지는화살표로표현하며, 화살표끝부분이꽉차있으면동기통신, 화살표끝부분이비어있는 단순선으로그려져있으면비동기통신을의미한다. 시퀀스번호 메세지의순서를나타내는번호 가드조건 메시지를송신하기위한조건. 즉가드조건이성립할때메세지가송신된다. 링크 메시지가교환되는오브젝트들을연결하는것으로협력다이어그램만그린다. 리턴 메시지가종료한것을나타내며시퀀스다이어그램만그린다. 필수표기는아니며리턴값을명시 하고싶을때사용한다. 라이프라인 오브젝트의생존기간을나타낸다. 즉라이프라인이설정되어있으면오브젝트는메모리에존재 하는것이다. 29
활성구간 " 제어포커스 " 라고부르며오브젝트가활동하고있는것을나타낸다. 활성구간은겹칠수있다. 상호작용다이어그램의사용처오브젝트를추출할때구조를나타내는모델이없을경우상호작용다이어그램을만든다는것은오브젝트를자유롭게만들어나간다는의미한다. 이러한상호작용다이어그램을구현하고자하는모든시나리오에적용하면필요한오브젝트를모두열거할수있다. 이런경우상호작용다이어그램중에서협력다이어그램을사용하는것이좋다. 로직확인할때 상호작용다이어그램을사용하면 1 개의시나리오의구현과로직을한눈에보기에좋다. 클래스다이어그램을확인할때 이미구조적모델, 특히클래스다이어그램이있을경우상호작용다이어그램을통해해당클래스 다이어그램이시스템의요구사항을제대로만족시키는지확인할수있다. 책무밸런스를확인할때클래스다이어그램에서도알수있지만보다알기쉬운것은상호작용다이어그램을사용하여확인하는것이다. 혹시책무가특정클래스에집중되는지를확인하여균형있게배치되도록수정할수있도록도와준다. * 주의사항 시나리오를분명히한다. 시나리오없이머릿속의생각만으로그리면무엇을만족하는다이어그램이완성되는지명확하지 않다. 그래서반드시시나리오를준비해야한다. 1 다이어그램 1 시나리오 상호작용다이어그램은 1 개의다이어그램이 1 개의시나리오에대응하는것이기본이다. 긴시나리오는다이어그램을분할한다. 시나리오가길경우시퀀스다이어그램을분할해서그리는편이이해가기쉽다. 메시지명은받는측의관점에서붙인다. 메시지명은받는측의관점에서붙이는것을권장한다. 사실그다지이상할것은없으나클래스 다이어그램을만들어보면어느쪽이나은지는알수있다. 모르는오브젝트에메시지를보내지않는다. 오브젝트간의상호작용을구현할때메시지를보내려면메시지를보내기전에보내는측오브젝트 는받는측오브젝트를어떠한방법으로든알고있어야한다. 생성과소멸을의식한다. 오브젝트의생성 / 소멸을의식하지않고그리면실제코드구현시메시지를보냈는데오브젝트가미생성이든가혹은이미소멸했거나또는소멸해야하는오브젝트가남아메모리부족이일어나는등문제가발생할수있다. 30
상호작용에참가하지않는오브젝트는그리지않는다. 협력다이어그램을그리기전에오브젝트다이어그램을만들었다면자기도모르는사이에상호작 용에참여하지않는오브젝트를그리게되는경우가있다. 오브젝트명을붙인다. 오브젝트에제대로이름을붙이는습관을갖는것이중요하다. 오브젝트명으로역할명을붙이거나 리턴값명과오브젝트명을붙이면식별하기가쉽다. 파라미터도쓴다. 메시지명만쓰고파라미터쓰는것을잊어버리기쉽다. 파라미터를제대로써놓으면데이터가어떻게전달되는지알수있고, 메시지의의미도보다알기쉽기때문에가능하면메시지에파라미터도추가하는것이좋다. 레이아웃을고안한다. 협력다이어그램을그릴때주의사항이다. 클래스다이어그램과비교할경우가많기때문에클래 스다이어그램의레이아웃과비슷하게배치하면비교하기가쉽다. 상세함에주의한다. 상호작용다이어그램은아주상세하게그릴수있는다이어그램이다. 따라서작성자가어디까지 요구하고있는지를이해하고있어야한다. 3) 설계모델링 (Architectural Modeling) 설계모델링은시스템구조에대한전반적인형태를표현한다. 설계모델링은구조모델링과행동모델링을 모두포함하고있다. 즉, 전체시스템의윤곽을정의한다. 31