본문 바로가기
기타/소프트웨어분석설계

Chapter 14. UML 모델링

by hyun-am 2019. 6. 10.

UML 모델링 특징(★★★)

먼저 UML은 객체지향 설계를 위한 표준 언어로, 소프트웨어 시스템의 산출물을 가시화, 명세화, 구축, 문서화 하는데 사용됩니다.

  • 가시화 : 소프트웨어의 개념 모델을 시각적인 그래픽 형태로 표기하고, 표기법에 사용하는 심벌에 명확한 정의를 부여하는 것 입니다. 이것을 통해 개발자들은 원활한 소통을 할 수 있습니다.
  • 명세화 : 정확하고, 명백하며, 완전한 모델을 만드는 것을 말합니다. UML은 소프트웨어 개발을 위한 분석, 설계, 구현 각 단계에서 필요한 모델을 정확하고 완전하게 명세하는 역할을 합니다.
  • 구축 : 다양한 프로그래밍 언어로 표현하는 것 입니다. 또한 이미 구축되어 있는 소스코드를 UML로 역변환하여 분석하는 역공학(Reverse Engineering)도 있습니다.
  • 문서화 : 요구사항을 표현하고 시스템을 테스트하는 언어도 제공합니다.

UML의 구성요소

먼저 UML의 구성요소를 그림으로 표현하겠습니다.

 

 

UML의 구성요소중 사물 에 대해서 먼저 설명하겠습니다.

  1. 구조 사물 : 시스템의 구조를 표현하는 사물(클래스, 인터페이스, 통신, 유스케이스, 노드 등)
  2. 행동 사물 : 시스템의 행위를 표현하는 사물(교류, 상태 머신)
  3. 그룹 사물 : 시스템의 개념을 그룹화 하는 사물(패키지)
  4. 주해 사물 : 시스템의 부가적으로 개념을 설명하는 사물(노트)

UML은 네가지 관계가 있습니다.(★★★)

  1. 의존 관계(Dependency Relationship) : 두 사물 간의 의미적 관계로, 한 사물의 명세서가 바뀌면 그것을 사용하는 다른 사물에게 영향을 끼치는 것을 말합니다. 예시) TV와 리모컨의 관계가 있습니다.
  2. 연관 관계(Association Relationship) : 두 사물 간의 구조적 관계로, 어느 한 사물 객체가 다른 사물 객체와 연결되어 있음을 말합니다. 연관을 표현할 때는 이름과 역할 그리고 다중성을 표기합니다. ('has-a')관계라고도 합니다. 예시) 자동차와 부품들의 관계가 있습니다.
  3. 일반화 관계(Generalization Relationship) : 일반화된 사물과 좀 더 특수화된 사물 사이의 관계를 말합니다. ('is-a')관계라고도 합니다. 예시) 부모 클래스로서의 자동차와 자식클래스로서의 택시, 버스, 트럭 등
  4. 실체화 관계(Realization Relationship) : 한 객체가 다른 객체에 의해 오퍼레이션을 수행하도록 지정하는 것 입니다. 예시) TV의 행동중 일부가 리모컨의 행동을 실체화 함 클래스(TV)와 인터페이스(리모컨)가 가지는 관계가 실체화 관계

다이어그램은 두가지로 나눌 수 있습니다.

  • 구조 다이어그램 : 정적 모델링을 위한 다이어그램
  • 행위 다이어그램 : 동적 모델링을 위한 다이어그램

UML 모델링의 이해(★★★)

네 가지 측면

  • 정적 측면 : 모델링 대상 범위에서 객체의 구조와 관계를 나타냄
  • 동적 측면 : 이벤트가 발생함에 따라 객체의 상태 변화를 나타냄
  • 기능적 측면 : 사용자의 측면에서 본 시스템의 행동을 나타냄
  • 물리적 측면 : 시스템 실행을 위해 필요한 컴퓨터와 기억 매체의 공간적인 배치 기술

세 가지 레벨

레벨은 모델의 추상도를 나타내는 것으로, 건축물로 예로 들면 대략적인 스케치에서부터 치수까지 기록한 상세한 설계도가 있는 것과 같다.

  • 개념 레벨 : 문제 영역(도메인)의 해석을 기록
  • 사양 레벨 : 설계 작업
  • 구현 레벨 : 개발 작업

UML 다이어그램을 네 가지 측면과 세 가지 레벨에서 정리한 것 입니다.

 

 

정적 모델링 도구(★★★★★)

정적 모델링 도구란 UML의 구조 다이어그램에 해당합니다. 시스템의 지속적이고 정적인 측면을 모델링하는 특징이 있습니다.

정적 모델링구조의 종류로는 클래스 다이어그램, 오브젝트 다이어그램, 컴포넌트 다이어그램, 배치 다이어그램이 있습니다.

클래스 다이어그램

객체지향 모델링에서 가장 많이 사용하는 개념입니다. 클래스는 객체지향 프로그램에서 속성과 행위를 갖는 하나의 객체 단위입니다. 클래스의 구성 요소로는 이름, 속성, 메서드 입니다.

 

이런식으로 표현 할 수 있습니다.

 

클래스 다이어그램 작성 절차(★★)

  1. 클래스 명세를 결정하고, (클래스 후보 추출)→업무 명세서에서 명사를 찾아냅니다.
  2. 메서드(오퍼레이션)를 찾아낸 후,
  3. 필요한 속성을 추출하는 과정입니다.

오브젝트 다이어그램

  • 오브젝트는 클래스의 인스턴스(구체적인 예)
  • 오브젝트 다이어그램은 특정 시점의 오브젝트들의 구조적 상태를 표현

 

컴포넌트 다이어그램

연관성이 높은 기능과 관련된 데이터를 하나로 묶어 처리하도록 만들어진 단위입니다.

모든 컴포넌트는 반드시 다른 컴포넌트와 통신할 수 있는 인터페이스가 정의되어 있으며, 컴포넌트의 인터페이스와 인터페이스의 구현은 컴포넌트를 구성하는 내부에 캡슐화 되어 있다.

인터페이스에 의해서 기능이 정의된, 독립적으로 개발, 배포, 조립 가능한 시스템의 구성단위입니다.

 

 

배치 다이어그램

노드를 입체적으로 표현하고, 그 사이를 의존 화살표와 접속 관계를 나타내는 실선으로 연결해 이들 간의 통신 관계를 나타낸 것입니다. 이를 다르게 설명하면 네트워크, 하드웨어 또는 소프트웨어들을 실행 파일 수준 컴포넌트들과 함께 표현한 것 입니다.

 

 

동적 모델링 도구(★★★)

UML의 행위 다이어그램과 인터랙션 다이어그램에 해당합니다.

시간의 흐름에 따라 유동적으로 변하는 객체의 상태나 행위, 객체 간의 상호작용 등을 표현합니다.

유스케이스 다이어그램

액터의 관점에서 본 시스템의 기본적인 행동을 기술한 것 입니다.

개념 레벨의 유스케이스는 이용자의 요구 를 기술하는 수단입니다.

필요한 유스케이스(기능요구)가 모두 적혀 있는지 확인가능합니다.

 

 

순차 다이어그램

객체 간의 동적 상호작용을 시간의 흐름에 따라 나타낸 것 입니다.

특징으로는 객체의 메서드(오퍼레이션)와 속성을 상세히 정의한 것 입니다.

객체의 책임(Responsibility) : 순차 다이어그램의 객체는 다른 객체가 의뢰하는 일을 처리하는 과정입니다.

또한 순차 다이어그램은 유스케이스를 실현합니다.

 

 

통신 다이어그램

순차 다이어그램이 메시지에 대한 시간적 순서를 나타낸 것이라면, 통신 다이어그램은 객체들 사이에 주고받는 메시지를 표현한 것 입니다.

객체 와 객체 사이를 연결하는 링크 그리고 그 링크 사이에 오가는 메시지 로 구성됩니다.

 

 

상태 다이어그램

객체의 상태가 이벤트의 발생 혹은 시간의 경과에 의해 어떻게 변화하는지를 나타낸 것 입니다.

특정 객체가 생성하여 소멸할 때까지의 라이프 사이클을 모델화 한 것 입니다.

※ 표현하는 방법은 객체가 가질 수 있는 상태를 모서리가 둥근 사각형으로 나타내고, 전이(상태의 변화)를 나타내는 화살표와 화살표 위에 이벤트와 조건 등을 표시합니다.

 

 

활동 다이어그램

예전부터 사용해왔던 순서도와 모양이 매우 비슷합니다.

순서도 를 객체지향 스타일로 개선시킨 형태입니다.

객체지향 스타일 모델을 상위 수준뿐만 아니라 하위 수준으로도 표현하기 위해, 객체나 조직 또는 역할에 대한 행위를 표현할 수 있도록 구획면을 추가했습니다.

※ 구획면이란 수영장의 레인처럼 구분된 세로 방향의 영역을 말하는데, 활동 다이어그램에 표현된 각 활동의 수행 주체를 표현할 때 이용됩니다.

 

 

UML 모델링 절차(★★)

  1. 초기 클래스 다이어그램 작성
  2. 유스케이스 다이어그램 작성
  3. 클래스 다이어그램 변경
  4. 순차 다이어그램과 통신 다이어그램 작성
  5. 인터페이스를 식별(클래스 다이어그램 변경)
  6. 활동 다이어그램과 상태 다이어그램을 작성
  7. 컴포넌트 다이어그램 및 배치 다이어그램 작성

 

 


 

본문 내용은 아래 책을 참고하여 작성하였습니다.

https://book.naver.com/bookdb/book_detail.nhn?bid=9910113

 

시스템 분석과 설계

[시스템 분석과 설계]는 비즈니스 시스템을 개발하는 데 필요한 요구 분석 및 설계 방법론을 다룬 책으로, 기업의 정보시스템 개발 과정 및 개발에 참여하는 사람들의 역할, 개발에 사용되는 설계 및 분석 도구, 개발 후 품질관리까지의 전 과정을 간결하게 설명한다. 구조적 방법론, 정보공학 방법론, 객체지향 방법론의 주요 개념과 원리를 살펴본 후 미니 프로젝트로 해당 방법론의 적용 사례를 보여주어 원론적인 내용 이해에 그치지 않고 실제적인 지식이 될 수 있도록

book.naver.com

 

 

댓글