Introduction to OOAD using UML tools 200611450 강세용 200610118 김규수 201060682 Valentin
이제부터 OOA/D 에관하여, UML을사용한소프트웨어의개발이어떻게이 루어지는지를알아보도록하겠습니다. 서와각각의산출물에대해서언급하고, 일단은전반적인소프트웨어개발순 마지막에각각의다이어그램별로 그다이어그램들을어떻게사용하는지에대하여설명하겠습니다. 지금소개해드릴것은 GRAPPLE 이라는 "Guidelines for Rapid APPLication Engineering 흡사한 이라는것이며이것은 RUP의아이디어와많이 UML 을소프트웨어개발사례에적용하는지침중의하나입니다. GRAPPLE GRAPPLE 은다섯개의진행영역(Segment) 으로이루어져있다. 각진행영역은순서대로여러개의동작(action) 으로구성되어있으며각각의동작에서작 업결과물(Work-product) 가만들어지며, 각동작에대한담당자가구분되어있다. 대부분 의경우, 이렇게만들어진작업결과물은프로젝트관리자에의해서종합되어의뢰인에게 보여지지지만, 사실작업결과물은단지의뢰인에게보이기위해서만드는것이아니라, 불 필요한문서화를따로하지않고작업과정의진척을유지하고관리하기위해서만든다. GRAPPLE 은객체지향시스템을기준으로고안되었으며, 각진행영역을이루고있는동작들은객체지향적성격에맞는작업결과물을만들어내도록조정되었다. 다음이다섯개의진행영역이다. 1. 요구사항수집 (Requirement Gathering) 2. 분석 (Analysis) 3. 설계 (Design) 4. 개발 (Development) 5. 배포 (Deployment)
위의앞머리를하나씩따면 RADDD 가되는데, 이것을줄여서 이라고부른다. 1. 요구사항수집 (Requirement Gathering) 다섯개의영역중에가장중요한것은바로요구사항수집이다. stackholder가무엇을원하 는지도모르는데, 제대로된시스템을만들수는없다. 제대로된요구사항을이해하기위해서 는도메인의핵심을이해해야한다. 1.1 업무과정파악 훌륭한개발작업은의뢰인의업무가어떻게진행되는지를이해하는것부터시작된다. 분석가는의뢰인(stakholder) 혹은의뢰인이인정한 관계자 를만나서해당업무가어 떤단계로진행되는지에대한이야기를나눈다. 이곳에서도메인영영의용어들을얻을 수있으며, 분석가는차후에이어휘를사용해의뢰인과이야기를한다. 이때만들어지는작업결과물은해당업무과정에서단계와결정위치를정리하여나타낸활동다이어그램(Activity Diagram) 이된다. 1.2 도메인분석이동작은의뢰인(stackholder) 나의뢰인이인정한관계자와이야기를나눌때수행되며, 의뢰인의도메인을가능한더욱탄탄하게파악하가위함이목적이다. 이동작은앞의업무과정파악과비슷한개념적인성격을가지고, 구축하고자하는구체적인시스템사항은아직나타나지않는다. 분석과는이과정에서도메인에관련된최대한많은것을알아내고분석해야한다. 객체모델러는대화중의명사를정리하여클래스를만들기시작하며, 어떤명사는속성, 어떤동사는오퍼레이션등으로분류할수있을것이다. 이작업은모델링도구를사용 하는것이능률적이며, 이문서의 UML 도구는 staruml 을사용하여, 대부분의다이어그 램모형과관계도를작성하였다. 이동작에서만들어지는작업결과물은추상적인수준(high-level) 의클래스다이어그램과대화내용을정리한노트가되겠다. 1.3 연동시스템확인이동작의초기에개발팀은자신들이만든새로운시스템이의존할시스템과이시스템과잘맞물리는시스템을찾는다. 시스템엔지니어는이동작의진행과정을예의주시한다음, 배포다이어그램을작업결과물로만들어낸다.
1.4 시스템요구사항확인이동작에서개발팀은처음으로공동어플리케이션개발 (Joint Application Development)JAD 를가지게될것이며이모임에는의뢰인(stackholder) 이속한그룹의의사결정권자와잠재사용자, 개발팀맴버들등이참여한다. 이곳에서개발팀은의견을조율하고, 객체모델러는앞서그려진( 도메인분석) 클래스다이어그램을손질한다. 여기서만들어지는작업결과물은패키지다이어그램이며, 이곳에추상적인수준의시스템기능이담겨있다. 그리고각각의패키지에는그룹화된유스케이스들도포함될것이다. 2. 분석 (Analysis) 이진행영역은 요구사항수집 등의결과를가지고더욱자세히작업하여문제의이해도 를높인다. 이영역은독립적으로시행되는게아니라전단계인요구사항분석단계중에시 작되는데, 보통은 JAD 모임의클래스다이어그램을손질할때이영역이같이시작된다. 2.1 시스템사용법의이해 이동작은추상수준의유스케이스분석작업이며개발팀은각유스케이스를시작하게되 는행위자와그유스케이스의결과를얻는행위자를알아낸다. 행위자는사람이될수도 시스템이될수도있다. 또한유스케이스를새로만들어내고, 추상유스케이스도만든다. 이동작에서만들어지는작업결과물은행위자와유스케이스간의스테레오타입을가진 의존관계를나타내는유스케이스다이어그램이다. 2.2 클래스다이어그램손질 JAD 모임이진행되는동안객체모델러는회의내용을종합하여다시클래스다이어그램 을계속하여고쳐나간다. 이때, 객체모델러는연관, 추상클래스, 다중성, 일반화, 집합 연관등의내용을모두적어나가며여기서만들어지는작업물은정형화된클래스다이어 그램이다. 2.3 객체의상태변화분석객체모델러는상태변화를나타냄으로써모델을더자세하게만든다. 다이어그램이다. 작업결과는상태 2.4 객체간교류정의 개발팀은유스케이스다이어그램과정형화된클래스다이어그램들을가지고, 객체들이 어떻게교류하는지를정의해야한다. 객체모델러는시퀸스다이어그램과협력다이어그램 을만든다. 작업겨로가물은시퀸스다이어그램, 협력다이어그램이다.
3. 설계 (Design) 이진행영역은 분석 진행영역에서얻어낸결과를가지고솔루션을설계한다. 분석 과 설계 도서로완전한독립적인진행영역이아닌, 설계가완료될때까지서로의영역을자유 롭게넘나들수있다. 3.1 객체다이어그램의개발과손질 프로그래머는클래스다이어그램을가지고필요한객체다이어그램을그린다. 각각의오 퍼레이션을체크하고여기에맞는활동다이어그램을그림으로써, 완전한객체다이어그 림을그린다. 활동다이어그램은 개발 진행영역의대부분의코딩작업기반을제공하며, 이영역의작업결과물은객체다이어그램과활동다이어그램이다. 3.2 컴포넌트다이어그램의개발프로그래머가재대로된활동을할수있는단계가이부분이다. 여기서할일은컴포넌트를시각화하고각각의의존관계를나타내는것이다. 작업결과물은컴포넌트다이어그램이다. 3.3 배포계획컴포넌트다이어그램이만들어지고나면, 시스템엔지니어는시스템배포와연동시스템의통합을계획한다. 시스템엔지니어는배포다이어그램에컴포넌트를적적히배포해그려넣는다. 여기서만들어지는결과물은이전에그린배포다이어그램의일부가될부분다이어그램이다. 3.4 사용자인터페이스의설계와원형정의 사용자인터페이스는모든유스케이스를고려하여만들어져야한다. GUI분석가느ㄴ사 용자와함께각각의유스케이스에맞는화면프로토타입을그리고, 사용자는화면컴포 넌트를원하는위치에붙인다. 각컴포넌트의위치에만족하면, 개발자는사용자인터페 이스의원형을정의할수있게된다. 여기서작업결과물은화면원형을잡은스크린샷이 다. 3.5 시험설계유스케이스는소프트웨어를시험하는데설계의용도로쓰인다. 개발된소프트웨어가유스케이스에서설정한대로잘동작하는지평가하기위해서이다. 이과정에서유스케이스다이어그램을사용하여시험용스크립트나자동화된시험도구를개발한다. 결과물은시험스크립트가된다. 3.6 문서화시작최종사용자나시스템관리자를위한시스템설명서를작성하기시작한다. 문서화는시스템설계자와함께스토리보드를작성하기시작하고문서의골격을만든다. 결과물은문서의골격이다.
4. 개발 (Development) 개발은프로그래머가직접적으로나서며, 이미충분한분석, 설계작업을거쳤기때문에개 발작업은빠르고부드럽게진행한다. 4.1 코드작성 프로그래머는완성된클래스다이어그램, 객체다이어그램, 활동다이어그램, 컴포넌트 다이어그램을가지고시스템에필요한코딩을시작한다. 작업결과물은코드이다. 4.2 코드시험 완성된코드가원하는대로작도앟는지시험스크립트를사용하여평가한다. 해당코드 가모든시험을통과할때까지 코드작성 단계에반영하여피드백으로사용할수있으 며, 그반대도가능하다. 4.3 사용자인터페이스의구축과코드의연결및시험사용자의확인을거친사용자인터페이스를직접구현한다. 4.5 문서화완료프로그래머의작업과동시에진행하며소프트웨어개발완료와동시에끝난다. 시스템에관련된설명서이다. 결과물은 5. 배포 (Deployment) 배포의영역은 개발 진행이시작하기전에이루어진다. 이영역에서소프트웨어는다른 시스템과연동되며, 백업복구에관한계획등시스템설치시험으로모든영역이종료된다. 여기까지가 Grapple 에대한전반적인진행과정이며, 대부분의소프트웨어 는이와비슷하게만들어집니다. 특히분석과설계에진행되는각각의다이 어그램들과유스케이스같은문서산출물들은객체지향분석과설계를더 욱확실하게만들어주며이것들은반복되어진행될수록더정확하게요구사 항에맞춰시스템을구현할수있습니다. 이제부터각각단계중, 분석과설계단계에쓰인다양한다이어그램들은상세하게사용하는방법을설명하겠습니다. 또한이것들에의해어떻게시스템이객체화되고모델링되는지도알아보겠습니다.
UML Diagram
클래스 / 객체다이어그램 (Class/Object Diagram) 1. 클래스표현의기본 클래스를 UML 로나타낼때는사각형안에다가클래스이름을적어넣는다. 이때클래 스이름은첫자를대문자로적고, 사각형의상단에가깝게두는것이보통이다. 클래스 이름이두단어로되어있다면두단어를붙여쓰고, 둘째단어의첫자도대문자로쓴 다. WachingMachine 만약클래스가다른패키지안에속해있다면, 패키지이름:: 클래스이름 이런식으로표현한다. 이렇게쓴클래스를경로이름(pathName) 이라고부른다. 1.1. 속성(Attribute) 클래스에속한특성에이름을붙인것이다. 클래스는 0 개이상의속성을가질수있으며, 한단어로된속성의이름은소문자로쓰는 것이보통이며, 속성이름이두단어이상으로되어있다면, 두단어를붙여쓰되, 두번째 단어의첫문자를대문자를쓴다. 1.2. 오퍼레이션(operation) 객체에게요청할수있는행동을말한다. 속성이름과마찬가지로소문자시작하며, 둘째 단어부터는첫자를대문자로시작한다. 속성(Attribute) 밑에구분선을그어그밑에위
WachingMachine +brandname +modelname +serialnumber +capacity 치시킨다. 또한매개변수(parameter) 리스트를넣어줄수있으며매개변수는 이름: 타입" 의형태를가진다. 반환값은괄호뒤에콜론을찍고, 값과타입을적으면된다. 이러한오퍼레이션의정보를오퍼레이션의시그니처(signature) 라고한다. WashingMachien +brandname +modelname +serialnumber +capacity +acceptclothes() +acceptdetergent(c: String) +turnon(): Boolean +turnoff(): Boolean WashingMachine brandname modelname serialnumber capacity acceptilothes(c:string) turnon():boolean turnoff():boolean 1.3. 책임(Responsibility) 및제약(Constraints) 클래스아이콘에는위의표기법외에도책임(responsibility) 를부여할수있다. 책임이 란, 특정한타입혹은클래스가 해야하는 일을설명해둔것이다. WashingMachine brandname modelname serialnumber capacity acceptilothes(c:string) turnon():boolean turnoff():boolean Take dirtyclothes as input and produce {capacity = 16 or 18 or 20 lb}
표기법은위와같다. 또한오른쪽의대괄호는속성이가지는제약(constraints) 다. 즉위 wasingmachine의 capacity는 16,18,20 세가지값중하나만가질수있다. 1.4. 노트(Node) 속성, 오퍼레이션, 책임, 제약이외에도클래스에추가적인정보를덧붙일수있는수단 이하나더있는데, 노트(note) 라고불리는것이다. WashingMachine brandname modelname serialnumber capacity acceptilothes(c:string) turnon():boolean turnoff():boolean 일련번호를생성 하는방법을알고싶으면 정부표준 참조하라 EV5-2241을 노트는텍스트와그림을동시에사용할수있다. 2. 클래스모델링의시작 클래스는지식도메인에기반한어휘와용어로부터만들어진다. 시스템분석가는의뢰인과상담하여그들이가지고있는지식도메인을파악하여정리하고, 그도메인에서발생되는무제를해결할컴퓨터시스템을설계해나가면서, UML에사용할용어를선정하고이것을클래스로모델링하는것이다. 2.1 클래스관계
2.1.1. 연관(Association) 클래스가개념적으로연결되어있을때, 이관계를연관이라고부른다. 그리고이것을표 시하기위해선. 두클래스를선으로잇고, 선위에연관이름을붙인다. 둘사이의관계 를방향을지정해줄수있는데, 채워진화살표머리를붙여주면된다. 이것은팀에속한선수의연관을그림으로나타낸것이다. Player play on Team 또한한클래스가다른클래스와연관이되면, 각각은해당연관관계내에서역할을가 진다. 클래스옆에다가원하는역할을써줌으로써연관관계내에서의여고할을표시할 수있다. 즉아래그림처럼, Player와 Team 간의고용주, 피고용주역할이성립할수있 는것이다. Player Plays on Team Employee Employer 연관은하나의클래스가다른클래스에연결된것이상으로복잡해질수도있다. 아래그림처럼여러개의클래스가하나의클래스에연결되는것도가능하며, 문어발처럼, 하나의클래스에서여러클래스로연결되는것도가능하다. Forward Team Guard
2.1.2. 연관에대한제약 두클래스사이의연관관계가어떠한규칙을따라야할경우가있다. 이규칙을덧붙일 수있는데, 앞의클래스에서알아본제약(constraint) 을연결선부근에다가쓰면된다. 예를들어, 은행원(Bankteller) 은고객(Customer) 의은행업무를도와주지만(Serves), 각고객들이창구에서나온순서(Order) 대로은행업무를도와준다. 이상황을모델링하 면아래처럼그릴수있다. ordered 란, 텍스트가담긴중괄호( 제약) 를 Customer클래스 가까이붙이는것이다. BankTell er Serves {ordered} Custome 또한가지의제약ㅇ은두개의연관선사이를점선으로잇고이위에 {or} 로표기하는 Or 관계이다. 아래그림은고등학생들이진로를정하는데(choose) 있어서학문적인 (academic) 코스또는상업적인(commercial) 길을선택할수있다는상황을모델링한것 이다. HighSchoolStudent Chooses Academic {or} Chooses Commercial 2.1.3. 연관클래스 연관은클래스와같이속성과오퍼레이션을가질수있다. 사실, 속성과오퍼레이션을 가진연관은연관클래스(Association class) 라는이름으로따ㅓ로구분한다. 연관클래스 를그리는방법은클래스를그리는방법과동이랗며, 연관선과이으려면점선을사용한 다. 연관클래스도다른클래스에대하여연관을가질수있다.
Player Team General Manager Negotiates Contract 위그림은 Player와 Team 사이의 plays on 연관에대한연관클래스를보이고있다. 여 기서연관클래스는 Contract 이며, 이연관클래스는 GeneraManager 와도연관이있다. 2.1.4. 링크(Link) 객체가클래스의인스턴스인것처럼, 연관도자신의인스턴스를가질수있다. 어떤특 정한선수가특정한팀에소속되어있는관계를생각하면, 이때의 Plays on 연관관계 를링크(link) 라고부른다. 링크는두객체( 인스턴스) 를선으로이어서나타내며, 객체에 밑줄을긋듯이링크에도밑줄을긋는다. Player Plays on Team 2.1.5. 다중성(Multiplicity) Player와 Team 이가지고있던지금까지의연관관계는일대일관계였다. 즉하나의 클래스에하나의클래스가연관되어있는상태다. 하지만클래스간의관계는일대다수 또는다수대하나일수있으며이런모든것을고려할수있어야한다. 이것을다중성 (Multiplicity) 이고한다. StartingPlayer play on Team 5 1
위그림이 5개의 StartingPlayer를하나의 Team 에관련시키는방법이다. 다중성은일대일( one-to-one ), 일대다 ( one-to-many ), 일대일또는그이 상(one-to-one or more), 일대 0 또는 1( one-to-zero or one), 일대일정범위 (one-to-a bounded interval) 등등다양하게표현할수있다. UML 은 more" many" 를표현하는기호로써 * 를사용한다. 2.1.6. 수식연관 일대다 ( one-to-many ) 의다중성을가지ㄴ연관관계에서는한객체가특정한객체 를가려내어야하는상황이발생한다.(lookup) 한쪽클래스의객체가다른쪽클래스의 객체를선택하여연관관계내에서의역할을만족시켜야할때첫째클래스는자신이원하 는객체를찾끼위해특정한속성에의존할수밖에없는데, 대개특정한속성은 ID 번 호같은식별자에해당한다. ReservationList 1 * Reservation 위그림과같이예약리스트와연결된다수의예약들중특정한확인번호를사용해예 약을찾고싶을대, UML 에서이런특정한확인번호를수식자(qualifier) 라고하여작은 사각형으로나타내고일대다수의다중성에서는 "1" 을의미하는클래스의옆에붙는다. ReservationList Reservation +ConfirmNumber 1 * 그래서위그림처럼수식자- confirmationnumber 와 Reservation 클래스사이는일 대일의관계가성립한다.
2.1.7. 반사연관(Reflexive association) 클래스는자신과연관관계를가질수도있으며이것을반사연관이라고한다. 여러가지 역할을맡을수있는객체를가지고있을대, 이런경우가발생하며, 예를들어탑승자 (CarOccupant) 는운전자(Driver) 도될수있고, 승객(Passenger) 도될수있다. 이것을 UML 로나타내려면연관선이자신의클래스사각형을가리키도록긋고, 각각의역할과연관의이름, 연관의방향그리고다중성관계를표시해주면된다. 연관선에다가 Drivers +Driver 1 CarOccupant 1 CarOccupant 0..4 +passanger Drives driver 0..4 passenger 위그림은사각형두개가곂쳐있는것이아니라, CarOccupant클래스에서출발한연관선 이자기자신에게로다시돌아오는것이다. 연관은 Drives 오연결되어있으며, 한명의 driver는 0에서 4까지의 passenger 와관계를가질수있다. 2.2. 상속과일반화(Inheritance and Generalization) 객체지향은 일상생활의보편적인특징을멋지게표현해낼수있다는 점에서우수하 다. 어떤사물이속한범주를알고있으면, 이범주에속해있는다른사물의특성을알 수있다. 객체지향개념에서는이것을상속(Inheritance) 라고하며 UML에서는일반화 (Generalization) 이라고한다. 한클래스는다른클래스로부터속성과오퍼레이션을물려 받을수있으며, 슈퍼클래스는서브클래스보다일반적인특성을가진다. UML 에서클래스의상속관계를나타낼때에는서브클래스에서슈퍼클래스로선을그은
다음, 슈퍼클래스쪽에다가속이빈화살표머리를붙여준다. 이런타입의연결관계를... 의일종 이라고부른다. Animal Amphidian Malmmal Reptile Horse 위그림처럼하얀색빈삼각형의방향으로상속성을결정한다. 서브클래스는슈퍼클래스 로부터상속받은속성과오퍼레이션이외에자신만의것을더추가할수도있다. 슈퍼클 래스를가지지않는클래스는기본클래스(Base Class) 또는루트클래스(root class) 라고 하며비슷하게서브클래스를가지지않는클래스를리프클래스(leaf class) 라고한다. 한편클래스가하나의슈퍼클래스를가지면단일상속(single inheritance) 라고하며두개 이상의슈퍼클래스를가지는상속은다중상속(multiple inheritance) 라고부른다. 2.2.1. 상속관계의정의 시스템분석가는고객과의상담과정에서여러가지상속관계를발견해낸다. 시스템분석가는한클래스에속해있는속성과오퍼레이션의일반성을찾아내어다른클 래스에적용할수있는지를재빨리간파해야한다.
2.2.2. 추상클래스 또한클래스중에는인스턴스를지원하지않는클래스가있을수도있다. 추상클래스라고하며이탤릭체로쓴다. 이런클래스를 2.2.3. 의존관계(dependency) 한클래스가다른클래스를사용하는 관계가하나더있다. 이것을의존관계 (dependency) 라고한다. 의존관계가가장흔하게드러난예는다른클래스를사용하는 오퍼레이션의시그니쳐를보일때이다. 예를들어직원들이써넣을수있는 Form 을표시해주는시스템을설계한다고할때, 직 원들은서식을선택하고, 이서식에내용을적는다. 만약이서식에관련된내용을출력 한다고한다면, System의출력은사용자가어떤서식을선택했냐에따라전적으로의존 할수밖에없다. 이상황을 UML 로표시하려면아래와같다. System displayform() Form System의 displayform() 은 Form 과의존관계를갖는다. 2.3. 클래스다이어그램과객체다이어그램 클래스다이어그램은일반적인정의성(definitional) 정보를알려준다. 반면에, 객체다 이어그램은클래스의특정한인스턴스정보와어떠한상황에처해있는지의정보를보여 준다. 시간의개념(instants) 과인스턴스(instances) 는객체다이어그램의개념을잘설명 할수있는단어가되겠다. 아래그림은체스게임을클래스다이어그램으로나타낸것이 다.
ChessPiece height uppershape color startinglocation currentlocation Knight height = "medium" uppershape = "horsehead" Queen height = "tall" uppershape = "tiara" Pawn height = "short" uppershape = "sphere" 그리고이그림이객체다이어그램이다. thiswhitequeen:queen Is being attacked by thisblackknight:knight Is defending Is strategically positioned against thiswhitepawn:pawn
클래스다이어그램으로는부족한, 위치정보, 말의공격대상등을객체다이어그램으로 해결할수있다. 집합연관, 복합연관, 인터페이스그리고실체화 2.4. 집합연관(aggregation) 하나의클래스가여러개의컴포넌트클래스로구성되어있는경우, 이러한경우를집합 연관이라고한다. 컴포넌트클래스와전체클래스는부분- 전체(part-whole) 연관관계를 가진다. 집합연관은계층도로나타내며 전체(whole)" 클래스는윗부분에위치하며, 컴포넌트클 래스는아랫부분에위치한다. 전체클래스와컴포넌트클래스는선으로연결되며, 전체 클래스쪽에빈마름모꼴이붙는다. 집합연관의컴포넌트들은 Or관계에놓일때도있으며이것을모델링하려면사이에제 약을두면된다. 두개의집합연관선사이를점선으로이은다음에 {or} 를써준다. 식사 1 {or} 1 1 1 1 수프셀러드메인코스디저트 2.5. 복합연관 복합체(Composite) 는강한집합연관에의해만들어진클래스이다. 복합체에서각컴포 너트클래스는오직하나의전체클래스에만소할수있다. 커피테이블이복합체의예 인데, 몸체와다리로구성되어있다. 복합연관의표기는집합연관을나타내는방법과동 일하며, 단지마름모에색깔만칠하면된다.
커커커커커 손손커다다몸몸다다다다다 2.6. 인터페이스와실체화 인터페이스(Interface) 는클래스의일정한행동(behavior) 을나타내는오퍼레이션의집 합으로써, 다른클래스에서사용될수있다. UML 에서는이런것을실체화(Realization) 관계라고한다. 인터페이스의모델링방법은클래스의모델링방법과비슷하며, 차이가있다면, 인터페 이스는오퍼레이션의집합이기때문에속성(attribute) 를갖지않는다. 그리고인터페이 스의이름위에 <<interface>> 라고써주면해결된다. 세세세세 <<interface>> 조조손손커 그리고클래스와인터페이스사이의실체화관계는다음과같이간단하게나타낼수있 다. 세세세 사사사 조조손손커
2.6.1. 인터페이스와포트 UML2.0 에서는클래스와인터페이스의연결단자를그릴수있어서인터페이스의개념을 좀더자세히표현할수있다. Computer Mouseport Mouse 그것을 다. Port라고하며인터페이스와클래스의연결단자를좀더자세하게나타낼수있 2.7. 가시성(Visibility) 가시성은속성과오퍼레이션에적용되는것으로, 해당클래스의속성과오퍼레이션을들 여다볼수있는범위를말한다. 가시성을나타내는세가지 protected, public, private 의개념을들어보면알기쉽다. Public 속성과오퍼레이션은다른클래스가마음껏사용할수있다. Protected 속성과어퍼레이션은원래클래스와여기서상속받은클래스만이사용할수 있다. Private 속성과오퍼레이션은원래의클래스만사용할수있다. 인터페이스를실체화하기위해서는인터페이스안에설정된오퍼레이션들이모두 public 가시성을가지고있어야한다. protected나 private로막힌오퍼레이션은아무런 의미가없다. 왜냐면인터페이스는많은클래스들에의해실체화되기위한용도로고안되 었기때문이다. UML 에서속성이나오퍼레이션의가시성을설정하는기호는 +,#,-로서속성이나오퍼레이션이름앞에붙여준다. 위와같이해당하는속성이름앞에 오퍼레이션들도마찮가지로같은표시법을쓴다. public, private, protected 가표시되어있다.
WachingMachine +brandname -modelname #serialnumber +capacity WachingMachine +brandname -modelname #serialnumber +capacity +TurnOn() #TurnOff() 2.8. 스코프 속성과오퍼레이션이가지고있는또하나의특성으로써스코프(scope) 가있다. 스코프 에는두가지종류가있다. 인스턴스스코프(instance scope) 에서는각각의인스턴스에 속한속성과오퍼레이션들이각자의값을가지도록되어있다. 클래스스코프(classifier cope) 에서는해당클래스에대해유일한속성값과오퍼레이션값을가진다. 클래스스코 프가설정된속성과오퍼레이션은이름에밑줄이그어져있다. 클래스스코핑은특정한 그룹의인스턴스들이그클래스에고유한속성을 다. 인스턴스스코핑은일반적으로사용되는스코핑이다. 공유해야할필요가있을때사용한 유스케이스 (USE-CASE) 1. Use Case Diagram 정의 Use Case Diagram은 UML 을이용한새로운시스템설계의시발점이된다. 시스템에 연루된모든사람들이이해할수있는방법으로시스템비즈니스요구사항들을열거하는 데이용된다. Use Case Diagram 은시스템세부사항에대한최상위수준의형태화모형이며, 관리자, 고객들, 그리고다른비개발자들사이에개발완료후시스템작동내역에대하여원활한 의사소통방법을제공한다. Use Case Diagram은시스템작동에관한세부사항은보여 주지않으며, 누가시스템을사용하는지와시스템을통하여할수있는일이무엇인지를 묘사한다. 2. Use Case Diagram 작성시기 - 소프트웨어프로젝트의개발범위를정의하는단계
- 소프트웨어에대한요구사항을정의하는단계 - 소프트웨어의세부기능을분석하는단계 - 소프트웨어가아닌업무영역을이해하고분석하는단계 3. Use Case Diagram - 요소 : Actor, Usecase 구성요소 - 관계 Communication, Include, Extend, Generalization 1) Actor - - - 시스템이외부에존재하면서시스템과교류혹은상호작용하는것 시스템이서비스를해주기를요청하는존재 시스템에게정보를제공하는대상 2) Usecase - 시스템이제공하는서비스혹은기능 - 시스템이 Actor에게제공하는사용자관점의기능단뒤 - Actor의요청에반응하여원하는처리를수행하거나정보를제공 - Actor와한번이상의상호작용을통한의미있는묶음의시스템행위 - 의미있는자기완결형의서비스단위 - 사용자관점에서의정의가필요 3) Communication - Actor와 Usecase 사이에정의되는관계 - 일반상호작용관계가존재하는것을의미 - Actor는정보를통보받거나요구 - Usecase는정보를제공
4) Generalization - Actor와 Actor, Usecase와 Usecase 사이에정의 - 두개체가일반화관계에있음을의미 - 보다보편적인것과보다구체적인것사이의관계 (is-a 관계) - 상속의특성을지님 5) Include - Usecase와 Usecase 사이에정의되는관계 - 한 Usecase가다른 Usecase의서비스수행을요청하는관계 - 즉, 한 Usecase가자신의서비스수행도중에다른 Usecase의서비스사용이필요 할 때정의( 서비스는반드시사용이되어야함) - 포함되는 Usecase는공통서비스를가진존재 6) Extend
- Usecase와Usecase 사이에정의되는관계 - Include와동일하게서비스수행을요청하는관계 - Include와달리서비스가수행되지않을경우도있음 - 수행요청조건을 Extention Point라고함 4. Use Case Diagram 작성단계 1 Actor 식별모든사용자역할식별상호작용하는타시스템식별정보를주고받는하드웨어및지능형장치식별 2 Usecase 식별 Actor가요구하는서비스식별 Actor가요구하는정보식별 Actor가시스템과상호작용하는행위를식별 3 관계정의 Actor와Actor 관계분석정의 Actor와 Usecase 관계분석정의 Usecase와 Usecase 관계분석정의 4 Usecase 구조화 두개이상의 추출된서비스를 Usecase에존재하는공통서비스 Usecase 정의 조건에따른서비스수행부분분석하여추출 추출된서비스를 Usecase로정의 추출된서비스를사용하는 usecase와관계정의
협력다이어그램 (Collaboration Diagram) 1. Collaboration Diagram 정의 Collaboration Diagram은 Class Diagram과 Sequence Diagram의교차적개념으로생 각할수있다. Collaboration Diagram 은객체, 역할, 이들간의순차적의사소통을모형 화한다. - 하나의 Usecase 를실현하기위해서어떤객체가참여하고, 객체간에어떤순서로상 호협력해야하는지를정의한모델 - 해결해야할문제가주어진상황에서그문제를해결하기위해필요한객체를정의하 고, 객체간의동적인상호관계를순서에따라정의함으로써주어진문제를해결하는모 델 - 모델링하는공간이자유롭기때문에같은유형의객체를모아놓을수있고, 구조적인 측면을중시하여모델링 2. Collaboration Diagram 작성목적 - 객체간동적상호작용을구조적측면을중시하여모델링 어떤객체가참여하고어떻게상호작용하는지를정의하고, 객체간상호작용을구 조적인관점에서정의 - 객체간상호작용을정의하는과정에서객체를더욱상세하게정의 객체간상호작용을정밀하게정의함으로써객체간에분담해야하는책임이더욱 상세하게정의 객체의책임은오퍼레이션으로구현 행위를위해필요한객체의속성도정의 - Usecase 실현 Usecase별로 Collaboration Diagram이작성 Usecase 에필요한객체가주인공으로등장하고, 객체간의메시지를통해서 Usecase 의기능이실현 - 프로그래밍사양정의 상세화된 그램사양정의 Collaboration Diagram은곧바로프로그래밍될수있는수준으로프로 3. Collaboration Diagram 작성시기
- Usecase Diagram 이정의부터프로그램코딩을하기전 (Sequence Diagram 과동일) - 다른 Diagram처럼여러번에걸쳐정제되는과정 - 단계별다른관점의객체등장 분석단계 : 비즈니스관점 설계단계 : 구현관점 - 작성하기위한준비물및선행과정 유스케이스다이어그램이작성 4. Collaboration Diagram 구성요소 1 Things - Actor Sequence Diagram과동일 - Object Sequence Diagram과동일 2 Relationship - Message Flat Flow of Control * 모형에서알려지지않거나중요하지않은메시지유형임을표시할경우에사용 Nested Flow of Control * 모형에서알려지지않거나중요하지않은메시지유형임을표시할경우에사용 Asynchronous Flow of Control * 병렬처리로의사소통을할경우에사용
Return Flow - Link 객체와객체간연관관계. * 메시지는링크를따라움직이므로객체가통신하려면링크되어있어야함. 5. Collaboration Diagram 작성순서 1 작성대상선정한다. 2 Actor를 Diagram 에위치시킨다. 3 Class를 Diagram 에위치시킨다. 4 객체간메시지를정의한다. 5 객체를추가로정의한다.
시퀸스다이어그램 (Sequence Diagram) 1. Sequence Diagram 정의 Sequence Diagram 은시간의순서화된순차를이용해서객체간의교류를모형화는데 이용되며, Usecase 행위를클래스에분배하는데이용된다. Sequence Diagram은통합 프로세스에서기술된소프트웨어개발 Life Cycle 전반에걸쳐서이용된다. 2. Sequence Diagram 작성목적 - 객체간동적상호작용을시간적개념을중시하여모델링 - 객체의오퍼레이션과속성을상세히정의 - Usecase를실현 - 프로그래밍사양정의 3. Sequence Diagram 작성시기 Usecase Diagram 정의후부터프로그램코딩전 4. Sequence Diagram 구성요소 1 Things - Actor Usecase 에서의 actor. - Object 클래스의인스턴스. 클래스타입으로선언된변수형태로존재
2 Relationship - Message 메시지(Message) 는 Sequence Diagram의서로다른객체간의의사소통을묘사하는 데이용된다. 객체가다른객체의처리를유도할필요가있을때나다른객체에게정보 를전달하고싶을때메시지가사용됨. 메시지는호출활성화객체의생명선으로부터피호출객체의생명선까지화살표로그려 진다. 화살표위에는보내지는메시지가위치함. * Flat Flow of Control 가장일반적메시지 Nested Flow of Control * 메시지가중첩시메시지가모두돌아와야다음처리진행 Asynchronous Flow of control * 메시지의결과를기다리지않고다음처리진행
Return Flow * 메시지를처리한결과. 필요한경우에만사용. 3 etc - Life Line 객체의생존기간. 점선에 X표시가객체가소멸하는시점 - Activation 객체가활성화되어있는기간. ( 점선표기) 객체가외부메시지를받고보낸메시지를기다리는기간. ( 좁고긴사각형) 5. Sequence Diagram 작성순서 1 2 3 작성대상선정 : Usecase를선정하고 Usecase 정의서분석 Actor 위치시킴 클래스위치시킴 4 객체간메시지정의 : : Actor는좌측부터위치 : Usecase에참여하는클래스위치 시간순서대로객체간메시지정의
5 객체추가정의 : 의. 요구사항처리를위해필요한객체가정의되지않았으면추가정 활동다이어그램 (Activity Diagram) 1. Activity Diagram 정의 Activity Diagram은시스템분석시 Usecase Diagram의다음단계로써시스템에필요 한여러표기법들을제공한다. Activity Diagram은사용자에게시스템실행의예측과여러조건과자극에대하여시스템이어떻게반응하는지를보여준다. Activity Diagram은모형화단계의시스템설계시복잡한객체행위를모형화하는데이용될수있다. 2. Activity Diagram 작성목적 - 처리순서표현 - 비즈니스프로세스정의 - 프로그램로직정의 : 처리흐름의도식화로프로그램로직정의가능 - Usecase 실현 3. Activity Diagram 작성시기 - 업무프로세스정의시점 비즈니스프로세스를정의하는용도로 - Usecase 정의서작성시, 처리절차기술할때 - - 오퍼레이션사양정의시 Class 기타 오퍼레이션의사양을 Activity Diagram을작성가능 Activity Diagram을적용하여작성가능 기타처리흐름이나처리절차가필요한시점이면언제나 Activity Diagram 작성가능 4. Activity Diagram 구성요소 1 Things
- Activity 행위나작업 ( 내부적으로구조를가지는단위) Activiy 의크기는작성대상에따라유동적이며, 한 Activity Diagram에서는 Activity 의크기균일한것이바람직 기 Activity 는최소단위가아니며내부적으로구조를가질수있는단위 Activity 는해당작업의종료시점을명확히정의하기가힘듬 ex) 상품조회, 구매결정, 결재내용입력, 결재자지정 표기법 : Acitivity 는모서리가둥근사각형으로표기하며, 이름은 Symbol 내에표 - Initial State 처리흐름이시작하는곳을의미 모든처리흐름은시작점으로부터개시되어전개 표기법 : 속이꽉채워진원 - Final State : 처리흐름이종료하는곳을의미 모든처리흐름은종료점에서처리흐름을완료 표기법 : 속이채워진원에바깥의또다른원이둘 러싸고있는모양 - Decision(Branch) Decision 은분기가일어나는곳 논리식의결과값에따라두곳이상의흐름으로분기가일어남 처리흐름은논리식의결과에따라처리흐름이나누어져전개되는것은매우흔하 게일어나는일 표기법 : 속이빈마름모꼴로표기하며, 명칭이나기타장식이붙지않음
- Synchronization Bar 병렬처리절차가시작되거나모이는곳 종종둘이상의처리절차가그수행순서에상관없이병렬로진행될경우있음 Synchronization Bar로부터분기해서다음 처리절차는병렬로수행 Synchronization Bar로모일때까지의 Synchronization Bar에이어진 Activity가수행되기위해서는병렬로수행되는 Synchronization Bar 상의모든처리절차가끝나야함 표기법 : 두꺼운실선으로표기, 대부분수평선으로표기되나, 수직선으로표기할 수도있음 2 Relationship - Transition 표현 하나의 Activity가행위를완료하고다른 Activity로처리순서가옮겨지는제어흐름 하나의 Activity에서여러개의 Transition 이나가기도하고, 들어오기도함. 표기법 : 화살표가달린실선으로표기하며, Activity의배치에따라수평선이나 수직선으로표기 3 Swim lane Swim lane은여러가지용도로쓰일수있음
* 업무조직의구분일수있고, 개인의역할에따른구분 가짐 Swim lane의영역내에정의된 Activity는그 Swim lane이관장하고 Ownership을 가능 Swim lane 을표현함으로써누가(Swim lane) 무엇을한다(Activity) 라는식의표현이 표기법 : Swim lane 은영역으로표현을하며, Activity Diagram의제일위쪽에서 아래쪽까지수직방향으로공간을구분하는방식으로표현. 모양이마치실내수영장의 트랙같다고해서명명. 5. Activity Diagram 작성순서 1 작성대상선정 : 업무프로세스모델링, 오퍼레이션사양정의 2 Swim lane 정의 : 대상영역에명확한역할을정의해야할때.
3 처리절차모델링 : 시작점, 끝점반드시표현. 상태다이어그램 (Statechart Diagram) 1. Statechart Diagram 정의 Statechart Diagram 은객체가상태를변화시키는방법을모형화하는데쓰인다. 상태는특정시점에서객체행위의이정표가되거나객체의단적인표현으로정의되기도한다. 2. Statechart Diagram 작성목적 - 객체의상태변화를상세히분석 - event에의한객체의반응을분석 - 객체의속성이나오퍼레이션을검증 3. Statechart Diagram 작성시기 한정해서정하기어려우나, 보통 Class 가정의된후, 즉 Class Diagram과 Sequence Diagram 이작성된후에작성. 4. Statechart Diagram 구성요소
- State State 란객체가가질수있는조건이나상황 생명주기동안객체의 State 는변화하며, State는객체의특정한속성의값으로표현 예) 자동차객체의 State : 주차, 주행, 정차, 수리 표기법 진입동작 (Entry Action) 상태에들어올때수행되는동작을정의 탈출동작 (Exit Action) 상태에나갈때수행되는동작을표기 내부전이 (Internal Transition)
현재상태에서처리할수있는이벤트가발생할경우상태를떠나지않고해당사건을 처리하는경우 활동 (Activity/Action) 현상태에서수행할동작을표현 지연사건 (Deferred event) 현상태를빠져나갈때발생한것처럼그효과를지연시킨이벤트. 위예에서 Tracking 상태에서 selftest 이벤트가발생하면이것을베시지큐에저장했다가, Tracking 상태에서벗어나는순간이벤트가활성화. - Transition Transition이란하나의상태에서다른상태로변화하는것이며상태간의관계를의미. 표기법 * 전이는상태와상태사이에화살표가달린실선으로표기. * 선위에는촉발사건(Event Trigger), 조건(Condition), 동작(Action) 이차례로표기. * 위세가지표기내용은각각생략될수있음. 원래상태 (Source State) * 전이가실행되기전의객체상태 촉발사건 (Event Trigger) * 전이를촉발시키는사건
전이조건 (Condition) * 전이촉발시에검토되는 Boolean 식 ( 참일경우에만전이가수행됨) 동작 (Action) * 전이도중실행되는행위또는오퍼레이션 목표상태 (Target State) * 전이가완료된후의객체상태 5. Statechart Diagram 작성순서 1 좀더상세히다루어야할개체( 객체나 Usecase) 를식별한다. 2 각개체의시작상태와종료상태를식별한다. 3 각개체와연관하는사건을결정한다. 4 시작사건으로시작하는상태차트다이어그램을생성한다. 5 필요한곳에서복합상태를생성한다.
컴포넌트다이어그램 (Component Diagram) 1. Component Diagram 정의 - 시스템의구현관점에서실행모듈(Component) 을정의하고, 실행모듈간의정적상호 작용을정의한모델 - 시스템이어떠한물리적구성요소들로 - 실행모듈(Component)- 구성되고, 그들간의 연관성을정의 - SW 1) 2) 분야에서사용되는컴포넌트정의 컴포넌트는시스템의재사용가능한구성요소 컴포넌트는시스템의교체단위이자업그레읻단위 3) 컴포넌트는인터페이스를통해그기능이사용되어지는, 독립적으로인도되는기능 조각 2. Component Diagram 작성목적 - 시스템의실행모듈(Component) 들을정의 시스템이구축될때, 어떤 Component들로구축될것인지를정의하는용도로사용 컴포넌트는독립적으로뱇, 교체가가능한단위 개발플랫폼에따라이러한 Component의특성은달라짐 - Component간 Dependency를정의 Component간의정적인상호작용을정의하는용도로사용 Component 사이의종속관계를표현함으로써실행시상호참조하는연관성을표현 - Component 뿐만아니라소스코드, 데이터베이스등의상호작용을모델링 3. Component Diagram 작성시기 - Component Diagram 은시스템의설계단계의막바지에작성. - 모든 Class 가물리적으로완전히정의되고, 그상호관계도정의된후 Component Diagram 작성.
4. Component Diagram 구성요소 1 Things - Component Component는독립적으로배포되고교체되며재사용될수있는 SW조각의미 표기법 : Component 는탭이달린직사각형으로표기하며, Component 이름은 Symbol 내에표기 - Interface Class 의일종 Class나 Component 의기능을외부에공개할목적으로쓰이며, 구현은하지않음 Interface의구현은 Class나 Component 에서하게되며, 이 Class는 Interface를 상속하여단지선언뿐인 Interface의구현을담당 단독으로표시되는경우는거의없으며해당 Interface를구현하는 Class나 Component 에붙어다님 표기법 : Interface는두가지형태로표기 1) Icon 형태의표기로원으로표현, Interface 이름은아래쪽에표기. 2) 보통클래스에 <> 라는 stereo type이부가된표기 2 Relationship - Dependency
객체나 Component가다른객체나 Component 의실행을요청하는경우, 사물간의실 행혹은참조관계를표현 사용되는관계 * Class와 Class * Package와 Package * Component와 Component * 때로는 Class-Package-Component 상호간 표기법 : 점선화살표로표현하고, 필요에따라선위에설명을붙이기도함 - Realization 정의하는사물과이를구현하는사물간에표현하는관계 Realization은사이에허용되는관계 * Interface( 정의) - Component( 구현) * Usecase( 정의) - Collaboration( 구현) * Interface( 정의) - Class( 구현) 삼각형이붙은쪽이정의하는사물, 반대쪽이구현하는사물 표기법 : 속이빈삼각형의화살표가한쪽에달린점선으로표현, 특별히 Component Diagram에서는 Interface와 Component간의실선표현
5. Component Diagram 작성순서 1 2 Component 대상을정의 Component Diagram 을그리기전에정의필요 * 무엇을 Component 로표현, Class를구성요소로하는실행모듈 * 소스코드를정의, 기타무엇을 Component로표현 Component 를식별 Component Diagram에등장할 Component 를정함. 3 * 소스파일일경우그대상은쉽게식별되지만실행모듈일경우간단치않음 * 여러가지가능한방법으로 Component를식별해내는작업을수행 Component 를배치하고필요시인터페이스를붙임 Component Diagram에 Component를배치하고이름을정의 Interface를정의할필요가있을경우 Interface를정의하고 Component와 Realization 관계로연결 4 Dependency 를정의 Component와 Component간의존관계를분석하여 Dependency 관계를정의 배포다이어그램 (Deployment Diagram) 1. Deployment Diagram 정의 Deployment Diagram 은각소프트웨어구성요소들이하드웨어의어디에위치하는지와 하드웨어구성요소들이서로어떻게교류하는지를보여주는 Diagram. 2. Deployment Diagram 작성목적 - 각소프트웨어구성요소들이하드웨어의어디에위치하는지와하드웨어구성요소들 이서로어떻게교류하는지를기록하는데이용된다.
3. Deployment Diagram 작성시기 - 시스템설계의마지막단계에서작성 모든설계가거의마무리되어시스템의하드웨어사양도확정된후작성 4. Deployment Diagram 구성요소 1 Things - Node Node 는하드웨어구성요소를표현하는데이용 표기법 : Node의이름을포함하는 3차원박스로표기 2 Relationship - Communication association Node들은 Communication association 으로연관하며, 이관계는두가지하드웨어 구성요소(Node) 가나름대로의의미를가지고서로통신하고있음을알게해주며, 통신 연관관계와함께항상표시되는고정유형에나타난다. 표기법 : 굵은선으로한노드에서다른노드로그려진다. 통신연관관계의고정유형은 Component 종속성을위한고정유형처럼 (<<...>>) 로표기된다. 고정유형이름은통신수단을표시하거나, 하드웨어두구성요소들 사이의프로토콜을묘사하는대상이된다.
5. Deployment Diagram 작성순서 1 2 시스템의노드를식별 식별가능한모든하드웨어목록과일치하는요구사항들을조사해야한다. Communication association 을추가 Communication association 으로식별된노드들을연관시켜야한다. Communication association은 기때문에, 이러한정보를위한요구사항검색이필요하다. Node간의통신유형을표시하기위해서고정유형화되