전공 과목/소프트웨어 공학

Lecture 09: 설계 - 2

arsenic-dev 2024. 10. 17. 00:13

경희대학교 김정욱 교수님의 소프트웨어 공학 수업을 기반으로 정리한 글입니다.

UML 모델링이란?

UML (Unified Modeling Language)

객체 지향 프로그램 설계를 표현하기 위해 사용하는 표기법, 즉 도표 그리는 방법이다. (절차 지향은 UML과 관련 X)

 

이는 설계 단계 뿐만 아니라 요구분석, 구현 단계에서도 사용 가능하여,

개발자간 의사소통(요구분석 -> 설계 -> 구현)을 원활하게 이루어지게 하기 위하여 표준화한 모델링 언어이다.(실제 언어는 X)

 

여기서 모델링은 중요한 개념과 특성, 개념들 사이의 관계를 파악해 다이어그램으로 정형화하는 것을 의미,

즉 UML을 사용하면 시스템을 가시화, 명세화, 문서화할 수 있다.

 

※ 요구 분석 때 만드는 Use Case diagram도 UML 중 하나이다. 즉 , Use Case diagram도 객체  지향 관점에서 바라보는 것이다.

 

UML이 필요한 이유

▶ 모델링이 없는 경우

▶ 모델링이 있는 경우

 

즉, 시스템을 가시화하고, 설계 단계에서 일관된 해석을 유지하기 위해 UML이 필요하다.

▶ UML을 사용하면 개발자간 소통이 쉽다.

UML의 구성요소

UML의 구성요소

1. 사물

다이어그램 안에서 관계가 형성될 수 있는 대상으로 가장 기본 요소이다.

ex) 객체, 기능

 

1) 구조 사물

모델의 정적인 부분들을 정의하며, 시스템의 개념적 요소를 표현한 것이다.

  • 클래스(Class), 유스케이스(Use case), 컴포넌트(Component), 노드(Node)

※ 유스케이스는 시간 흐름이 담기지 않는다.

 

2) 행동 사물

모델의 동적인 부분들을 정의하며, 시간과 공간에 따른 요소들의 행위를 표현한 것이다.

  • 상호작용(Interaction), 상태 머신(State machine)

3) 그룹 사물

요소들을 그룹으로 묶어서 표현한 것이다.

  • 패키지(Package)

4) 주해 사물

부가적인 설명이나 제약조건 등을 표현한 것이다. (UML 모델 설명(주석))

  • 노트(Note)

2. 관계 (Relationship)

사물과 사물 사이의 연관성을 표현한 것이다.

 

1) 의존 관계

두 사물 간의 의미적 관계로, 한 사물의 명세가 바뀌면 다른 사물에 영향을 주는 것을 말한다. (반대는 성립 X)

ex) TV(사물1)는 리모컨(사물2)의 명세에 따라 동작한다.

 

2) 연관 관계

객체 사이의 연결 관계로, 어느 한 사물 객체가 다른 사물 객체와 연결되어 있음을 나타낸다.

 

3) 일반화 관계

일반화된 사물과 더 특수화된 사물(한 가지 종류) 사이의 관계를 말한다. (상속, 실선으로 표)

ex) 동물과 [사자, 호랑이, 원숭이]는 일반화 관계이다.

 

4) 실체화 관계

사물이 할 수 있거나 해야 하는 기능(행위, 인터페이스)으로, 서로를 그룹화할 수 있는 관계이다. (상속 느낌, 점선으로 표현)

ex) 비행기와 새는 모두 날 수 있다. -> 날 수 있다는 행위로 그룹화할 수 있다.

▶ 실체화 관계 예시

3. 다이어그램

사물과 관계를 도형으로 나타낸 것이다.

 

1) 정적 모델링: 구조적 다이어그램

전체 시스템의 구조를 나타낸다. (시스템)

  • 클래스 다이어그램: 클래스와 클래스가 가지는 속성, 클래스 사이의 관계
  • 오브젝트 다이어그램: 클래스에 속한 사물(객체)들, 즉 인스턴스(Instance)를 특정 시점(정지 -> 동적 X, 동적인 것의 한 시점이기에 정)의 객체 사이의 관계를 표현
  • 컴포넌트 다이어그램: 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스를 표현 (소스 코드 간의 관계)

※ 컴포넌트: Source code(.h, .cpp), Run-time library(.dll)

▶ 구조적 다이어그램 예시

 

2) 동적 모델링: 행위 다이어그램 

객체의 생성, 소멸, 소통, 즉 시간의 흐름을 나타낸다. (객체)

  • 시퀀스 다이어그램; 상호 작용하는 시스템이나 객체들이 주고받는 메시지 표현 (전체 시스템 관점 - 객체 중심)
  • 상태 다이어그램: 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지를 표현 (하나의 객체 관점)
  • 활동 다이어그램: 시스템이 어떤 기능을 수행하는지 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서에 따라 표현 (전체 시스템 관점 - 시스템 중심)

▶ 행위 다이어그램 예시

 

3) 기능적 모델링

  • 유스케이스 다이어그램(요구분석): 사용자가 요구를 분석하는 것

UML 모델링

UML 모델링 구분

  • 기능적 관점 (사용자 측면) - 주로 요구분석 단계
  • 정적 관점 - 시간적인 개념 X, 시스템의 구조
  • 동적 관점 - 시간적인 개념 O, 시스템의 내부 동작

▶ UML 모델링 구분

 

UML 모델링 장점

  • 추상화와 모델링: 중요한 측면에 집중할 수 있음
  • 재사용성과 유지보수성: 변경에 따른 영향 예측, 관리가 쉽고, 모델을 기반으로 문서화할 수 있어 시스템 이해 및 관리 용이
  • 오류 감소와 품질 향상: 시스템의 설계와 구조를 시각적으로 표현하여 개발 과정에서 발생할 수 있는 오류 사전에 감지 가능
  • 협업과 커뮤니케이션

UML 모델링 단점

  • 과도한 상세성: 상세성 때문에 모델이 지나치게 복잡해질 수 있음
  • 너무 많은 선택지: 다양한 다이어그램이 존재(다양한 관점에서 시스템을 모델링)하여 어떤 걸 사용할지 혼란 초래
  • 비용과 도구 의존성: 특정 UML 도구나 소프트웨어어를 사용할 때 비용 발생, 이때 도구가 변경되거나 지원이 중단되면 문제 발생 가능성이 있음

UML 모델링 과정

1. 요구를 유스케이스로 정리하고 유스케이스 다이어그램 작성 (UML 모델링, 유스케이스 다이어그램 모두 객체 지향 관점)

2. 초기 클래스 다이어그램 작성 (기능: 클래스 안에 있는 함수, 객체: 클래스를 실화한 것)

3. 유스케이스를 기초하여 시퀀스(순서) 다이어그램 작성 (시스템)

4. 클래스 사이의 관계(인터페이스)를 찾아 객체 모형 완성

5. 상태 다이어그램(하나의 객체)이나 액티비티 다이어그램 추가하여 UML 모델 완성

▶ UML 모델링 과정

절차 지향 모델링

절차 지향 모델링

시스템의 처리 과정을 자료의 흐름에 중점을 두어 기술한 것이다.

ex) 자료 흐름도 (DFD: Data Flow Diagram)

 

단점

  • 유지보수가 어려움
  • 코드의 순서가 바뀌면 동일한 결과를 보장하기 어려움

▶ 절차 지향 설계 vs 객체 지향 설계

 

※ UML 모델링은 객체 지향 모델링으로, 절차 지향 모델링이 아니다.

 

최근엔 절차 지향 모델링은 거의 쓰지 않고, 객체 지향 모데링을 주로 사용한다.

'전공 과목 > 소프트웨어 공학' 카테고리의 다른 글

Lecture 10: 설계 - 3  (8) 2024.10.17
Lecture 08: 설계 - 1  (2) 2024.10.14
Lecture 07: 요구분석 - 2  (7) 2024.10.09
Lecture 06: 요구분석 - 1  (11) 2024.10.09
Lecture 05: 계획 (프로젝트 관리와 계획) - 2  (5) 2024.10.05