출처 : https://blog.naver.com/he1000/220718741438
클래스 다이어그램을 처음 작성하면서 찾다가 좋은 글을 발견하여 기록해둔다.


1. 정의

클래스 다이어그램 "시스템에서 사용되는 객체 타입(클래스)을 정의하고 그들 간에 존재하는 정적인 관계를 다양한 방식으로 표현한 다이어그램"입니다.

클래스 다이어그램은 객체지향 SW 시스템을 분석하고 설계하는 데 사용되는 핵심적인 모델입니다. 객체지향 SW 시스템은 클래스와 그 관계로 뼈대가 구성되기 때문에 이를 정의한 클래스 다이어그램은 곧 시스템의 구현될 모습을 정의한 것입니다. 클래스 다이어그램은 분석되거나 설계되는 모든 클래스를 한 장의 다이어그램으로 정의한 것 입니다.

 

클래스 다이어그램은 클래스의 정적인 정의와 관계를 표현합니다. 

객체가 아닌 클래스본질적으로 "정적(靜的)"입니다. 시간과 조건이 개입되지 않기 때문입니다. 그러나 객체그 자체가 동적(動的)인 개념을 가집니다. 클래스에서 파생된 것이
객체이고, 객체는 상태와 행위가 시간과 구체적인 조건에 따라 변화하고, 또한 다른
객체와 동적으로 상호 작용하는 것이기 때문입니다.

2. 작성 목적

단연 대표적인 UML의 다이어그램이라고 할 수 있는 클래스 다이어그램을 작성하는 목적은 다음과 같습니다.

  • 객체지향 SW시스템의 기본 단위인 클래스를 식별하고 그 관계를 정의하는 유용한
    방식을 제공합니다. 클래스 다이어그램은 객체지향 SW 시스템의 기본 단위인 클래스의 정의를
    용이하게 함으로써 시스템을 구축하는 본격적인 단계로 인도
    합니다.

  • 클래스 간의 정적인 협력관계를 정의함으로써 시스템을 이해하는데 용이하게 합니다
    하나의 클래스가 할 수 있는 일은 적습니다. 한 단위의 임무를 수행하려면 클래스간의
    협력은 필수적으로 필요합니다. 클래스 다이어그램은 이러한 클래스간의 정적인
    협력관계를 정의함으로써 시스템을 분석하고 이해하는데 도움을 줍니다.

  • 클래스의 오퍼레이션과 속성을 상세히 정의함으로써 SW시스템을 설계합니다
    클래스의 속성과 오퍼레이션을 상세히 정의하는 일은 객체지향 SW 시스템에
    있어서의 설계를 의미합니다. 클래스 다이어그램은 이러한 설계관점의 작업을 쉽게
    수행하는데 도움을 주어, 시스템 구축 과정에 큰 역할을 합니다.

  • 논리적인 관점으로부터 물리적인 관점까지 시종 일관된 형식으로 SW 시스템을
    분석, 설계하는 방식을 제공합니다
    기존 방식의 가장 큰 단점인 분석/설계 모델간의 차이(gab)를 극복하고, 동일한
    형식과 관점을 제공함으로써 의미의 소실없이 효과적인 시스템 분석, 설계방식을
    제공합니다. 클래스 다이어그램을 적용한 분석설계는 객체지향 프로그래밍에 가장
    가깝고 효과적인 방식입니다.

3. 작성 시기

클래스 다이어그램을 작성하는 시기는 정확히 언제라고 단정할 수는 없습니다.
보통 SW시스템의 분석단계와 설계단계에서 여러 번 작성됩니다. 여러 번에 걸쳐
클래스 다이어그램이 작성되면서 점점 상세화되고 정련되는 과정
을 거칩니다

이렇게 여러 번 작성하는 이유는 이 다이어그램을 작성하는 시기마다 그 관점이
변화하기 때문입니다. 분석단계에서는 분석의 관점에서 클래스를 정의하고
설계단계에서는 설계의 관점에서 클래스를 정의하게 됩니다. 그래서 클래스
다이어그램은 작성이 반복될 때마다 진화하지만, 단계 단계마다 작성되는 클래스
다이어그램 자체도 나름대로 의미가 있습니다.

보통의 경우 아래와 같은 시기에서 클래스 다이어그램이 작성됩니다

A.분석 단계 - B.개략설계 단계 - C.상세 설계 단계

클래스 다이어그램을 작성하려면 사용자의 요구사항이 정의되고, 개발할 SW 시스템에
대한 범위가 정의되어야 합니다

4. 작성시 3가지 관점

Class diagram을 처음부터 상세하게 정의할 수는 없습니다. 그래서 상세한 class
diagram
을 얻기 위해 단계적으로 상세화시켜 나가는 방식을 사용합니다.
Class Diagram
은 다음과 같이 3가지 관점으로 반복적이면서 점증적인 방식으로
작성
해 나갑니다.


Conceptual level
- 개발범위에 속해있는 문제영역에 대해 단순한 관계를 도출하는데 중점
- 업무 관점의 class 들만 도출하고, 구현에 관련된 시각은 최대한으로 배제

Specification level
- 구현관점을 살려 모델링을 수행
- 어떻게 코딩할 건지에 대한 관점을 배제
- 클래스의 속성과 오퍼레이션을 될 수 있는 한 상세히 정의하고, 구체적인 플랫폼(개발언어의 특성 등)특성을 반영하지 않음

Implementation level
- 언어와 개발플랫폼이 가진 특성 및 제한 사항을 반영
- 정의된 class를 보고 정해진 개발언어로 개발자가 코딩을 하기에 충분한 정보를 모두 표현

  • 구성요소
    클래스 다이어그램의 구성요소는 다음과 같습니다.

 

  • 클래스 표기
    일반적인 클래스 표기법
    클래스는 일반적인 표기와 icon 표기 두 가지의 표기가 가능합니다. 일반적인
    표기는 단순형 표기와 정규형 표기등 두 가지가 있습니다



A. 단순형 표기
- 직사각형에 클래스 명을 표기
Conceptual Level(개념 단계)의 클래스
- 다이어그램을 작성할 경우나, 클래스가 많아 그림이 복잡할 경우의 생략형 표현

B. 정규형 표기
- 세 개의 가로 간이 있는 사각형에 각각 클래스 명, 속성, 오퍼레이션을 차례로 표기

스테레오 타입이 정의된 클래스 표기법 >
스테레오 타입이 정의된 클래스의 경우 그 표기법은 달라집니다. 클래스의 스테레오
타입 중 대표적인 것은 <<boundary>> , <<control>> , <<entity>>, <<interface>>

입니다. 이를 일반형 표기와 icon 표기로 나타낸 것은 다음과 같습니다

  • 클래스의 기본 스테레오 타입
    클래스는 크게 대별하면 Boundary, Entity, Control 다음 세 가지 종류로 구분할 수
    있습니다


    <Boundary Class>
    사용자와 인터페이스를 담당하는 클래스입니다.
    주로 UI(User Interface)에 짝을 이루어 정의됩니다.
    이 클래스의 역할은 다음과 같습니다


    - 사용자로부터 UI 이벤트를 직접 받아서 시스템 내부에 처리를 의뢰합니다
    - 시스템으로부터의 응답을 UI를 조작하여 사용자에게 보여 줍니다
    - 사용자의 적절치 못한 입력에 대해서는 오류 메시지 등을 통해 직접 처리합니다

    <Control Class>
    Boundary Class Entity Class사이의 처리를 중재하고 제어하는 클래스입니다.
    이 클래스의 역할은 다음과 같습니다


    - 여러 클래스간의 협력작업을 제어하고 클래스간의 실행순서를 통제합니다
    - 결과를 조합하여 Boundary Class에 전달합니다
    - 데이터를 처리하는 도중에 발생하는 Transaction을 관리합니다

    <Entity Class>
    원하는 처리에 필요한 정보(데이터)를 관리하는 클래스입니다.
    이 클래스의 역할은 다음과 같습니다


    처리에 필요한 데이터를 읽어 옵니다
    - 데이터를 저장합니다
    - 데이터를 삭제합니다
    - 데이터를 수정합니다


출처 : https://blog.naver.com/he1000/220718741438 

반응형