소프트웨어공학개론 강의 7: 시퀀스다이어그램 최은만동국대학교컴퓨터공학과
UML 시퀀스다이어그램 l 시퀀스다이어그램 (Sequence Diagram) l 사용사례가어떻게수행되는지어떤메시지가언제보내지는지나타낸그림 l 시스템의동적인측면을캡처한것 l 동적뷰 (dynamic view) l 시간의흐름에따라정리해놓은것 l 페이지내려갈수록시간이흐름 l 객체는왼쪽에서오른쪽으로나열 l 메시지호출의흐름에언제참여하였느냐에따라 2
시퀀스다이어그램의요소 X-Axis (objects) member: LibraryMember book:book :Book Copy Y- -Axis (time) borrow(book) message ok = mayborrow() [ok] borrow(member) Life Line settaken(member) Object Activation box condition 3
시퀀스다이어그램작성 l Step 1. 참여하는객체를파악 l Step 2. 파악한객체를 X축에나열하고라이프라인을그음 l Step 3. 사용사례에기술된이벤트순서에따라객체의메시지호출을화살표로나타냄 4
객체나타내기 5
객체사이의메시지 l 호출한메시지를가진객체에수평화살표로표시 l 메시지이름과매개변수를화살표위에표시 6
메시지 l 메시지는수평화살표로표시됨 l l 점선화살표는리턴을표시화살표헤드의모양으로정상 / 비동기 (asynchoronous) 표시 7
메시지호출의표시 l 활성박스 (activation box) l 객체라이프라인위에그려짐 l 박스위에서객체의호출이이루어짐 l 객체의코드가실행되고있거나 l 다른객체의메소드가종료되기를기다림. :Instructor givetest() :Student Results Results activation 8
객체의라이프타임 l 생성 l new 라고위에쓴화살표로표시 l 생성된객체는다른객체보다조금아래위치 l 삭제 l 객체라이프라인의끝에 X 표시 l Java 언어 / C++ 언어에서객체의소멸은? 9
조건과반복 (UML 2.0) 10
시퀀스다이어그램사례 #1 11
시퀀스다이어그램사례 #2 12
시스템의콘트롤형태 l 다음시스템의제어흐름은어떤형태인가? l 중앙집중형 l 분산형 l 순서다이어그램은이런것을보여주는데도움이되는가? 13
다음다이어그램의제어패턴은? 14
이다이어그램의제어패턴은? 15
다음시퀀스다이어그램은? 16
시퀀스다이어그램과코딩 l 수강과목신청 17
시퀀스다이어그램과코딩 public class CourseSection { // The many-1 abstraction-occurence association private Course course; // The 1-many association to class Registration private List registationlist; // The following are present only to determine the state // The initial state is Planned private boolean open = false; private boolean closedorcancelled = false;... 18
시퀀스다이어그램과코딩 public void requesttoregister(student student) { if (open) // must be in one of the two 'Open' states { // The interaction specified in the sequence diagram Course prereq = course.getprerequisite(); if (student.haspassedcourse(prereq)) { // Indirectly calls addtoregistrationlist new Registration(this, student); } } } // Check for automatic transition to 'Closed' state if (registrationlist.size() >= course.getmaximum()) { // to Closed state open = false; closedorcancelled = true; } } 19
왜바로코딩하지않는가? l 시퀀스다이어그램은코드와매우밀접하다. 다이어그램을그리기전에왜바로코딩하지않을까? l 좋은시퀀스다이어그램은추상적가치를가짐 l 시퀀스다이어그램은언어효과를노린것 l 개발자가아닌사람도작성가능 l 여러객체를한페이지에서볼수있어 이해가쉬움 리뷰가용이 l 좋은커뮤니케이션도구 20
커뮤니케이션다이어그램 l 인터랙션에참여하는객체들의연관을나타내고있음 21
상태다이어그램 l 시스템에서중요한역할을담당하는클래스의상태변화 l 예 : ATM account 클래스 22
상태다이어그램의요소 l 상태 l 대상이갖는생명주기의한시점 l 액션이수행되거나이벤트를기다림 astate l 상태변환 l 상태사이의이동 l 이벤트에대한반응 l 액션 l On Entry - 상태에진입할때액션이구동됨 l Do - 상태안에서액션이수행됨 l On Event - 이벤트에대한반응으로액션이실행됨 l On Exit - 상태에서빠져나가기바로전에액션이실행됨 l 형태 : action-label / action 23
l 서브상태로분할할수있음 복합상태 l Order 의상태변환 24
병렬상태 l 복합상태안에서동시에여러개의병렬서브상태로구성 l 병행흐름은독립적 25
1. 범위를정한다. 상태다이어그램그리기 2. 시작, 종료상태를파악한다. 3. 객체나서브시스템이어떤상태들을갖는지찾아낸다. 4. 상태를전환시키는이벤트, 액션, 조건들을파악한다. 5. 필요하면서브상태를이용하여확장한다. 26
상태다이어그램의예 Moving up Activate On first floor Go_up (floor) do/moving to floor Arrived Moving down Arrived Go_up (floor) Moving to first floor do/moving to floor Arrived Idle timer = 0 do/increase timer Go_down (floor) [timer = time-out] 27
상태다이어그램의코딩 l 예 > 비디오대여시스템의비디오테이프객체의상태변화모델링 28
UML 정리 l UML 은이래서좋다. l 공통언어 요구, 명세, 설계를공유할수있게한다 l 비주얼구문이좋다 정보를요약 개발자 / 기술자가아닌사람들에게도이해가능 l 도구지원 Visio, Rational, Eclipse, Together 어떤도구는 UML 에서코드로자동변환 29
UML 모델링도구 l 많이알려진모델링도구 l IBM 의 Rational Modeler, 마이크로소프트의 Visio, ArgoUML, StarUML, NetBeans UML 플러그인 l 예 > StarUML 30
Questions?