Introduction to UML © copyright 2001 SNU OOPSLA Lab.
Contents - All Introduction to UML Use Case Diagram Class & Object Diagram Interaction Diagrams State & Activity Diagram Implementation Diagrams
Contents – Introduction to UML What is modeling Object-Oriented Modeling Introduction to UML History of UML Elements of UML UML Diagrams UML Conceptual Model
Phases of System Development Requirements Analysis Analysis Design Programming Test
What is modeling Why model ? Whenever something is built, drawings are made that describe the look and behavior of that “ thing ” The drawings are models of some thing A model is a description of some thing
What is modeling Modeling 모델을 만드는 일 ( 추상화 ) 로써 품질이 좋은 소프트웨어를 개발 및 배치할 수 있게 하는 모든 활동의 중심 모델 구축을 통해 개발 대상 시스템에 대한 이해의 증진 Model 현실을 단순화 / 가시화 시키는 것 System 의 Blueprint 를 제공 개발 고려 시스템의 총체적인 계획 및 상세 계획 표현 중요 영향 요소의 파악, 불 필요 요소의 생략 및 시스템 구축 제 약 조건 표현
What is modeling Goal 시스템을 현재 또는 원하는 모습으로 가시화 시스템의 구조와 행동을 명세화 시스템을 구축하는 기본 형태를 제공 시스템 분석 / 설계의 문서화
How to modeling 모델링의 원리 생성할 모델의 신중한 선택 : 선택 모델에 따라 문제를 공략하는 방법 과 해결책을 실현하는 방법에 많은 영향이 있음 모든 모델을 다양한 수준의 정밀도로 표현 현실을 반영한 모델 작성 상호 독립적인 모델들 몇 가지를 선택하여 모델링에 착수
Contents – Introduction to UML What is modeling Object-Oriented Modeling Introduction to UML History of UML Elements of UML UML Diagrams UML Conceptual Model
Object-Oriented Modeling 소프트웨어의 모델링 관점 알고리즘 관점 : S/W 의 주요 구성 요소인 Procedure 와 Function 을 제어 관 점에서 분할하여 시스템을 모형화 요구사항 변화에 적응력이 없음 대규모 시스템에서는 유지보수를 포함한 관리의 어려움 객체 지향 관점 : S/W 시스템의 기본 요소를 객체 또는 클래스로 파악하여 문 제 영역과 해결 영역을 모형화 객체 (Object) : 사물 (Thing) 을 말하며 고유성과 상태, 행동을 갖음 클래스 (Class) : 공통적인 객체들의 집합 UML(Unified Modeling Language) 의 목적 객체 지향 시스템을 가시화, 명세화, 문서화 하는 것
Introduction to UML Introduction Language is important. Conventional languages are used to communicate everyday ideas. Programming languages are used to communicate with machines. Professionals such as architects and doctors often have their own language that enable more precise and efficient communication between others working in the same domain
Introduction to UML Introduction software designers have a language for discussing the design of software systems (especially object oriented software systems). It's called the Unified Modeling Language (UML). You can't write an executable program in UML You can use it to capture and communicate the design elements of a program. The UML is an Object Management Group (OMG) standard and fast becoming a de facto standard
Introduction to UML Object Management Group(OMG) An international not-for-profit organization with over 800 members The OMG was established to promote object technologies OMG publishes guidelines and specifications that provide a common framework for application development
Introduction to UML The most often quoted definition of the UML is: The Unified Modeling Language (UML) is a language for specifying, visualizing, constructing, and documenting the artifacts of software systems, as well as for business modeling and other non-software systems. UML is a language with its own syntax and semantics visual language the syntax for expressing a class in UML
Introduction to UML The UML is unified When it was introduced it brought together the most popular object oriented design notations UML can be used across all phases the the software life-cycle During analysis it can be used to document business processes During implementation it can be used to document the methods and attributes of a class During deployment it can be used to document the hardware components of a system
Introduction to UML The UML is a modeling language, not a method A model is an abstract representation of something that is too complex to work with in its entirety An architect cannot build or make changes to a building without a blueprint a software engineer cannot develop or maintain a complex software system without a model Method : Modeling Language + Process
Contents – Introduction to UML What is modeling Object-Oriented Modeling Introduction to UML History of UML Elements of UML UML Diagrams UML Conceptual Model
History of UML In 1994 there were more than 50 object oriented design methodologies. Three of the most popular design methodologies were: Grady Booch's methodology (the Booch method) James Rumbaugh's Object-Modeling Technique (OMT) Ivar Jacobson's Object-Oriented Software Engineering (OOSE) In 1994 Grady Booch and James Rumbaugh started working together at Rational to unify their separate methodologies In 1995 Ivar Jacobson joined Rational and the three began working on unifying all three
History of UML
UML is derived from and unifies the notations of three object-oriented design and analysis methodologies UML is a modeling language; not a method Co-submitted to the OMG Digital Equipment Corp., HP, i-Logix, IntelliCorp, IBM, ICON Computing, MCI Systemhouse, Microsoft, Oracle, Rational Software, TI, and Unisys UML version Unified Method 0.8, at OOPSLA ’ 95 UML 0.9(June ’ 96), UML 0.91(Oct ’ 96) UML 1.0(Dec ’ 96), UML 1.1(July ’ 97) Version 1.3 became available in Version 2.x is expected in 200x
Contents – Introduction to UML What is modeling Object-Oriented Modeling Introduction to UML History of UML Elements of UML UML Diagrams UML Conceptual Model
The Views in UML Use-Case View Component View Deployment View Logical View Concurrency View
The Views in UML Use-Case View Functionality of the system as perceived by external actors Logical View System ’ s static structure and dynamic behavior Component View Organization of the code components
Essential Elements of the UML UML Diagrams "You can model 80 percent of most problems by using about 20 percent of the UML."-- Grady Booch The UML defines 8 different diagram types: Use Case Diagram Class Diagram Implementation Diagrams Component Diagram Deployment Diagram
Essential Elements of the UML UML Diagrams Behavior Diagrams Statechart Diagram Activity Diagram Interaction Diagrams Sequence Diagram Collaboration Diagram
Essential Elements of the UML UML Components
Things : 추상적 개념으로 모형 구성의 기본 요소 Structural Thing : UML 모형의 명사형으로써 모형의 정적인 부분이며 개념적이거나 물리적인 요소들을 표현 Class : 동일한 속성 (Attribute), Operation, Relation, 그리고 의미를 공유하는 객체를 표현 Interface : Class 또는 Component 의 Service 를 명세화 하는 Operation 들의 집합 외부적으로 가시화 할 수 있는 요소의 행동을 설명 특정 Class 나 Component 의 전체 또는 일부분 만의 행동을 표현 Window origin size open ( ) close ( ) move ( ) display ( ) Essential Elements of the UML
Structural Thing Collaboration 교류 (Interaction) 를 정의하며 서로 다른 요소와 역할들의 집합을 표현 시스템을 구성하는 Pattern 을 표현 - Class 의 행동적이고 구조적인 중요성을 도식 Use Case 시스템이 수행하는 순차적 활동들을 기술하며 행위자 (Actor) 에게 결과치를 제공 행동 사물을 구조화하기 위하여 사용하며 협력으로 실현 Chain of responsibility use Essential Elements of the UML
Structural Thing Component 시스템의 물리적이고 대체 가능한 부분으로 Interface 를 준수하여 구현 Class, Interface, Collaboration 등 서로 다른 논리 요소를 물리적으로 Package 화 Component 종류 : Application, Document, File, Library, Page, Table, ….. Node 실행 시에 존재하는 물리적 요소이며 Computer 자원을 나타내고 약간의 Memory 와 처리 능력을 포함 orderform.java Essential Elements of the UML
Behavioral Thing : UML 모형의 동사형으로써 모형의 동적인 부분이며 시간과 공간에 따른 행동 요소들을 표현 Interaction 행위이며 지정된 목적을 완성하기 위하여 특정 문맥에 속한 객체들 사이에 주고 밭는 Message 들로 구성 State Machine state 의 순서를 지정하는 행동 하나의 객체 혹은 교류에 발생하는 사건 (Event) 에 대한 대기 및 응답의 표현 Display Waiting Essential Elements of the UML
Grouping Thing : UML 모형을 조직하는 부분이며 모델을 분해하여 재 구성화 할 수 있는 단위 상자 Package 요소들을 Group 으로 묶는 다목적 Mechanism Component 와는 다르며 개발 시에만 존재하는 개념적인 모형 종류 : Frame Work, Sub System 표현 Business Rules Essential Elements of the UML
Annotation Thing : UML 모형을 설명하는 부분이며 Comment 로써 모형 요소를 설명하고, 명확히 하는 표현 도구 노트 (Note) 하나의 요소 또는 요소들로 구성된 공동체에 첨부되는 제약과 주석을 표현하는 기호 Return copy of self Essential Elements of the UML
Relationships : 구성 요소 간의 의미 있는 연결 의존 관계 (Dependency Relationship) 두 사물간의 의미적인 관계로써 한쪽 ( 독립 ) 사물의 변화가 다른 ( 종속 ) 사물에 영향을 주는 관계 연관 관계 (Association Relationship) 구조적 관계로써 Link( 객체 간의 연결 ) 의 집합을 나타냄 집합 (Aggregation) 연관 관계는 특별한 연관 관계로써 전체 (Whole) 와 부분 (Part) 간의 구조적 관계를 표현 EmployerEmployee 0.. 1* Essential Elements of the UML
Generalization Relationship Specialization / Generalization Relationship : 일반화 된 요소 (Parent) 의 객체를 특수화된 요소 (Child) 의 객체로 치환할 수 있는 관계 (Child 는 Parent 의 구조와 행동을 공유 ) Realization Relationship 분류자 (Classifier) 간의 의미적 관계 한 쪽 분류자는 다른 쪽 분류자가 수행하기로 되어 있는 계약 (Contract) 을 명세화 Essential Elements of the UML
Contents – Introduction to UML What is modeling Object-Oriented Modeling Introduction to UML History of UML Elements of UML UML Diagrams UML Conceptual Model
Diagramming : 구성 요소 들의 Graphic 표현 Class Diagram Class, Interface, Collaboration 간의 관계를 나타내며 객체 지향 시스템 모형화에서 가장 공통적으로 많이 쓰이는 Diagram Class Diagram : 시스템의 정적 (Static) 설계 View Active Class Diagram : 시스템의 정적 Process View Object Diagram 객체들 사이의 관계를 표현 Class Diagram 에 있는 사물들의 Instance 에 대한 정적 Snapshot 을 표현 실제 사례나 Prototype 사례의 시각에서 도해 UML Diagrams
Author name : String age : Integer Computer name : String memory : Integer * uses Bob:Author name : “Bob J” age : 32 Bob’s Job PC: Computer name : “Dell 466” memory : 64 Bob’s Home PC: Computer name : “IBM 466” memory : 128 Class Diagram Object Diagram
UML Diagrams Diagramming : 구성 요소 들의 Graphic 표현 Use Case Diagram Use Case, Actor 간의 관계를 표현 시스템 행동을 조직화하고 Modeling 시스템의 정적 Use Case View
UML Diagrams Diagramming Sequence Diagram, Collaboration Diagram Interaction Diagram 의 한 종류로 객체와 객체 간의 관계, 그리고 객체 간에 보낼 수 있는 Message 들로 구성 Sequence Diagram 과 Collaboration Diagram 은 동일 구조로써 상호 변형가능하며 Sequence Diagram 은 Message 의 시간적 순서를 강조하 고 Collaboration Diagram 은 객체의 구조적 구성을 강조 시스템의 동적 Dynamic View State Diagram 상태 (State), 전이 (Transition), 사건 (Event), 활동 (Activity) 로 구성 사건에 따라 순차적으로 발생하는 객체 행동에 중점을 두고 작성 시스템의 동적 View
Diagramming Activity Diagram 특별한 종류의 상태도로써 시스템 내부에 있는 활동간의 흐름을 표현 시스템의 기능을 모형화하고 객체간의 제어 흐름 표현에 유용 시스템의 동적 View Component Diagram Component 간의 구성과 의존 관계를 표현 시스템의 정적 구현 View Deployment Diagram 실행 시 처리하는 Node 와 그 Node 에 존재하는 Component 들의 구성을 표현 Architecture 의 정적 배치 View UML Diagrams
UML Rules UML 규칙은 자체 일관성이 있으며 관련 Model 들과 조화를 이룸 잘못된 모형 이름 (Name) 사물, 관계, 도해의 호칭 범위 (Scope) 이름에 특정한 의미를 부여하는 문맥 (Context) 가시성 (Visibility) 이름을 참조하고 사용할 수 있는 방법 무결성 (Integrity) 사물 상호간에 올바르고 일관성 있는 관계를 유지시키는 방법 실행 (Execution) 동적 Model 을 실행하거나 모의 실험 하는 것 생략 (Elided) View 를 단순화 하려고 특정 요소를 감춤 불완전 (Incomplete) 특정 요소를 빼고 작성 불일치 (Inconsistent) 모델의 무결성이 보장되지 않음 UML Conceptual Model
UML Common Mechanism 명세서 (Specification) UML 의 Graphic 표현에 구문법과 구성 요소의 의미를 포함하여 점진적으로 모델을 구성 표기 (Adornment) UML 요소의 고유하고 직접적인 Graphic 표기 등 요소의 가장 중요한 관점을 가시적으로 표현 Transaction + execute ( ) + rollback ( ) # priority ( ) - timestamp ( ) UML Conceptual Model
UML Common Mechanism Common Division Class 와 Object 의 분할 객체 지향 모델링은 다시 몇 가지로 나누어 표현 가능 Interface 와 구현의 분리 Customer name address phone Jan : Customer : Customer Elyse spellingwizard.dll IUnknown ISpelling UML Conceptual Model
UML Extensibility Mechanism UML 의 목적인 분석 / 설계 정보를 보다 정확하게 전달하기 위한 표준 언어를 제공 하나의 언어로 불가능한 모형은 통제된 방법으로 언어를 확장 스테레오 타입 (Stereotypes) UML 어휘를 확장하여 새로운 종류의 구성 요소를 생성 기존 구성에서 파생되므로 문제 영역은 기존 구성 요소의 고유한 것 UML Conceptual Model
UML Extensibility Mechanism 꼬리표 값 (Tagged Values) UML 의 구성 요소가 갖는 Property 를 확장 구성 요소의 명세서에 새로운 정보를 추가 생성 가능하도록 한다 제약 (Constraints) UML 구성 요소가 갖는 의미를 확장하여 새로운 규칙의 추가 및 기존 규칙 변경 EventQueue {version = 3.2 author = YL} add ( ) remove ( ) flush ( ) “exception” Overflow {ordered} Tagged Value Constraint Stereotype
UML Architecture How to decide system ’ s architecture S/W System 의 구성 System 구성 요소들과 요소들 간의 Interface 선택 요소들 간의 협력으로 명세화 되는 행동을 결정 점진적으로 큰 시스템으로의 구조 요소와 행동 요소를 결합 아키텍쳐 양식 ( 정적 / 동적 ) 들과 이들의 Interface, 협력, 결합을 표현 구조와 행동 용도, 기능성, 성능, 탄력성, 재 사용성, 경제성 기술적 제약 및 방법 미학적 표현
S/W Centric System ’ s Architecture Modeling Design ViewImplementation View Process ViewDeployment View Use Case View 시스템 조립 형상관리 시스템 구성 형태 분산, 인도, 설치 어휘 기능성 성능 확장성 처리량 UML Architecture
아키텍쳐 종류내 용내 용정적 도해동적 도해 Use Case View 시스템 행동을 설명 최종사용자, 분석가, 설계자, 테스트 담당자에게 제공 되는 뷰 시스템 아키텍쳐를 구체화하는 요인들을 명세화 Use Case Diagram Interaction D. State D. Activity D. Design View 시스템이 최종사용자에게 제공해야 할 서비스를 표현 문제 영역과 해법의 어휘를 형성하고 있는 Class, Interface, Collaboration 으로 구성 Class Diagram Object Diagram Interaction D. State D. Activity D Process View 시스템의 성능, 신축성, 처리 능력을 표현 시스템의 동시성과 동기화 메커니즘을 형설하고 있는 Thread 와 Process 로 구성 Class Diagram Object Diagram Active Class D. Interaction D. State D. Activity D Implementation View 시스템 배포의 형상관리 표현 물리적인 시스템을 조립하고 배포하는데 사용되는 Component 와 File 들로 구성 Component Diagram Interaction D. State D. Activity D Deployment View 시스템을 구성하는 물리적 부분의 분산, 인도, 설치 표현 H/W 형태를 형성하는 Node 로 구성 Deployment Diagram Interaction D. State D. Activity D UML Architecture
UML Development Life-cycle Development Process 고려 사항 UML 은 개발 Process 에 독립적이다 프로세스설 명설 명 Use Case 중심 System 에 요구되는 행동을 파악 System Architecture 검증, 확인 및 Test Project 관련자의 의사소통 (Use Case 관련 주요 산출물 활용 ) 아키텍쳐 중심 개발중인 System 의 개념화, 구축, 관리 진화 ( 변화 ) 내용을 파악하고 수행 (System Architecture 관련 주요 산출물 활용 ) 반복 / 점진적 프로세스 중심 반복 프로세스는 실행 배포판을 관리 점진적 프로세스는 System Architecture 를 지속적으로 통합하고 개정 배포판을 작성
S/W 개발 생명 주기 단계 각 단계는 반복적으로 수행되며 반복은 별개 활동으로써 대내외적으로 배포판을 만드는 기준 계획과 평가 기준을 갖음 단계설 명설 명 도입 (Inception) 개발의 시작점으로써 대상 요소들을 정의 정련 단계로 진입할 수 있는 충분한 근거 파악 정련 (Elaboration) 제품 Vision 과 Architecture 를 정의 System 의 요구 사항의 명료화, 우선 순위 결정, 기준선 설정 및 Test 기준 설정 요구 사항의 기능적 행동과 비 기능적 행동을 명세화 구축 (Construction) S/W 의 작성 및 실행 Architecture 기준선으로부터 전이의 준비 단계 Project 에 대한 요구 사항과 평가 기준의 재 검사 위험 요소들을 제거하기위한 자원의 할당 전이 (Transition) S/W 의 사용자 전달 System 의 지속적인 개선, 결함 제거 배포판에 새로운 특성 추가 UML Development Life-cycle