소프트웨어공학_12

김경민·2024년 11월 20일

3학년 2학기

목록 보기
23/29

🎯 목차

  • 상세설계
  • Class Diagram
  • Sequence Diagram
  • Peudo Code
  • 코딩
  • 테스트

📌 Class Diagram

  • 객체지향 설계에서 가장 중요한 다이어그램 중 하나로, 시스템의 구조적 모델을 시각적으로 표현

  • UML(Unified Modeling Language)다이어그램 중 하나로, 클래스와 클래스 간의 관계를 정의하고, 시스템의 정적 구조를 설명하는 데 사용

📌 목적

  • 시스템의 객체 지향 설계를 시각화하는 데 사용

  • 객체지향 프로그래밍에서 클래스는 객체의 청사진으로, 시스템이 어떤 데이터(속성)와 동작(메서드)를 가질지 정의

  • 클래스 다이어그램을 통해 시스템의 전반적인 구조를 쉽게 파악할 수 있으며, 개발자들 간의 소통을 원활하게 하고 설계를 명확하게 정리하는 데 중요한 역할


📌 구성요소

1. 클래스 (Class)

정의: 시스템에서 사용되는 객체를 추상화한 구조로, 속성(Attributes)과 메서드(Operations)로 구성됩니다.
표기법:

  • 사각형으로 표시되며, 세 개의 구역으로 나뉩니다:
    • 클래스 이름
    • 속성
    • 메서드

예시 :
+------------------+
| 클래스 이름 |
+------------------+
| 속성 |
+------------------+
| 메서드 |
+------------------+

2. 속성 (Attributes)

정의: 클래스의 상태나 데이터를 나타내는 변수.
표기법:

  • 형식: 접근제어자 속성명: 데이터 타입
  • 접근제어자:
  • : Public (공개)
  • : Private (비공개)
    (#) : Protected (상속 클래스 접근 가능)
    예시: - name: String

3. 메서드 (Operations)

정의: 클래스가 수행할 수 있는 동작이나 기능.
표기법:

  • 형식: 접근제어자 메서드명(매개변수: 데이터 타입): 반환 타입
  • 예시: + getName(): String

4. 관계 (Relationships)

클래스 간의 연결을 나타내며, 다양한 유형이 존재합니다:

  • 연관 (Association):
    두 클래스 간의 관계를 나타냄.
    화살표 방향으로 읽음.
    예시: Student -> Course (학생은 강의를 수강한다)
  • 집합 (Aggregation):
    전체와 부분 관계.
    부분은 독립적으로 존재 가능.
    빈 다이아몬드로 표시.
    예시: Team <>--- Player
  • 복합 (Composition):
    전체와 부분 관계.
    부분은 전체와 함께 생성/소멸.
    채워진 다이아몬드로 표시.
    예시: Library ◼--- Book
  • 일반화 (Generalization):
    상속 관계를 나타냄.
    비어 있는 삼각형 화살표로 표시.
    예시: Animal ▻ Dog
  • 의존 (Dependency):
    한 클래스가 다른 클래스에 의존적일 때 사용.
    점선 화살표로 표시.
    예시: Customer ---> Order

5. 인터페이스 (Interface)

정의: 클래스가 구현해야 할 동작의 집합.
표기법:

  • 이름 위에 <>로 표시.
  • 메서드만 포함.

lua
+---------------------+
| <> |
| Printable |
+---------------------+
| + print(): void |
+---------------------+


📌 Seuence Diagram

1. Actor (액터)

  • 정의:
    시스템 외부에서 시스템과 상호작용하는 사용자나 외부 시스템.
  • 사람 모양의 아이콘 또는 이름으로 표현.

    ┌───────────┐
    │ Actor │
    └───────────┘

2. Object (객체)

  • 정의:
    메시지를 주고받는 주체로, 시스템 내부의 특정 역할을 담당하는 요소.
  • 객체 이름을 적은 사각형 상자로 표시.
  • 형식: 객체이름:클래스명

예시: user:Customer

  • 수명선 (Lifeline):
    객체의 생애를 나타내는 점선으로, 시간 흐름을 따라 아래로 그려짐.

3. 메시지 (Message)

정의:
객체 간에 전달되는 요청, 응답, 데이터 등을 나타냄.
표기법:

  • 동기 메시지 (Synchronous):
    • 실선에 꽉 찬 화살표로 표시.
    • 요청을 보낸 후 응답을 기다림.

      css
      user → server: login()

  • 비동기 메시지 (Asynchronous):
    • 실선에 비어 있는 화살표로 표시.
    • 요청을 보낸 후 응답을 기다리지 않음.

      arduino
      user → queue: sendMessage()

  • 응답 메시지 (Return Message):
    • 점선 화살표로 표시.
    • 요청에 대한 응답을 나타냄.

      css
      server ← user: loginSuccess()

4. Activation (활성화)

  • 정의:
    객체가 메시지를 처리하는 동안 활성 상태임을 나타냄.
  • 객체의 수명선 위에 두꺼운 직사각형으로 표시.

    diff
    +-------------------+
    | 객체 처리 중... |
    +-------------------+

5. 데이터 저장소 (Data Store)

  • 정의:
    데이터를 읽고 쓰는 데이터 저장소를 나타냄.
  • 반원 모양으로 표현하거나 사각형에 <>를 추가.

    bash
    ┌───────────────┐
    │ <> │
    │ Database │
    └───────────────┘

6. 제어 구조 (Control Structures)

  • 루프 (Loop):

    • 반복적으로 수행되는 메시지 흐름을 나타냄.
    • 표기법: alt, loop 등의 키워드를 사용하여 상자로 묶음.

      arduino
      loop [조건식]
      user → server: requestData()
      end

  • 조건문 (Alt):

    • 조건에 따라 분기되는 흐름을 나타냄.

    • 예시:

      alt 성공
      user → server: loginSuccess()
      else 실패
      user → server: loginFailed()
      end

  • Sequence Diagram의 예시

    Actor :Object1 :Object2
    ┌─────┐ ┌─────────┐ ┌─────────┐
    │User │ │ Server │ │ Database│
    └─────┘ └─────────┘ └─────────┘
    | | |
    | login() | |
    |----------->>| |
    | | queryUserData() |
    | |----------------->>|
    | | returnData() |
    | |<<-----------------|
    | returnSuccess() |
    |<<-------------------------------|

profile
무지(無知)

0개의 댓글