본문 바로가기

스터디스터디/정처기

[실기] 소프트웨어 구축- UML

최초 작성일: 2024-08-26

최종 작성일: 2024-08-26

목표 : 정처기 합격 및 CS 지식 쌓기

 

 

 

UML(Unified Modeling Language)

(1)  개념 : 소프트웨어 시스템을 시각화 및 문서화 하고 소프트웨어 시스템의 구조와 동작을 명세하는 표준화된 모델링 언어

(2)  특징

특징 설명
가시화언어 다양한 다이어그램을 통해 시스템의 구조와 동작을 시각적으로 표현하며, 복잡한 시스템을 이해하기 쉽게 한다.
명세화 언어 표준화된 언어로 시스템 요구사항 기능을 명세하는 데 사용된다.
구축언어 설계와 구현에 도움이 되는 도구로 객체 지향 소프트웨어 개발에서 중요한 역할을 한다
문서언어 시스템의 기능, 구조, 동작 들을 표준화된 형태로 문서화 하여 개발과정에서의 커뮤니케이션을 개선하고 유지보수하는 데 돕는다

 

(3)   구성요소

1) 사물 (things)

종류 설명
구조 사물 시스템의 개념적, 물리적 요소
) 클래스, 유스 케이스, 컴포넌트 등
행동 사물 시간과 공간에 따른 요소들의 범위
) 상호작용, 상태머신
그룹 사물 요소들을 그룹으로 묶은 것
)패키지
주해 사물 부가적인 설명이나 제약조건
)주석, 노트

 

2)관계

  • 일반화 관계(상속)
    • 한 클래스가 다른 클래스를 포함하는 상위 개념일때의 관계
    • 객체지향 개념에서는 일반화 관계를 상속 관계 라고도 함
    • 예시) 가전 제품(부모 클래스) – 세탁기 등
  • 연관 관계(association)-긴밀한
    • 2개 이상의 사물이 서로 관계된 관계
    • 한 클래스가 다른 클래스에서 제공하는 기능을 사용할 떄 표시 ( 사람->휴대폰)
  •  의존 관계 -잠시 사용
    • 연관 관계와 같이 한 클래스가 다른 클래스에서 제공하는 기능을 사용할 떄 표시
    • 연관 관계와의 차이점은 두 클래스의 관계가 한 메서드를 실행하는 동안과 같이 매우 짧은 시간만 유지
    • 한 클래스의 명세가 바뀌면 다른 클래스에 영향을 줌
    • 한 클래스가 다른 클래스를 오퍼레이션의 매개변수로 사용하는 경우
    • 예시) 학생 -> 색연필
  • 실체화 관계
    • 인터페이스를 구현받아 추상 메서드를 오버라이딩하는 것을 의미
    • 한 객체가 다른 객체에게 오퍼레이션을 수행하도록 지정
  • 집합관계- 집약 관계 (aggregation)
    • 한 객체가 다른 각체를 소유하는 ‘has a’ 관계
    • 전체 객체의 라이프타임과 부분 객체의 라이프타임은 독립적
    • 전체 객체가 사라진다 해도 부분객체는 사라지지 않음
  • 집합관계- 합성관계 (Composition)
    • 부분 객체가 전체 객체에 속하는 관계로 긴밀한 필수적 관계
    • 전체 객체의 라이프 타임과 부분 객체의 라이프 타임은 의존적
    • 전체 객체가 없어지면 부분 객체도 없어짐

3) 다이어그램

1)    구조 다이어그램 -회원 안에 있는 속성들

종류 설명
클래스 다이어그램
(
전체적인 구조,/ 가장기본적임)

전체적인 구조
User -id,pw 등등
-시스템의 클래스와 이들 간의 관계
-시스템 내의 데이터 구조와 클래스 간의 상속, 연관, 의존성 등을 나타낸다
객체 다이어 그램(object)
User U1 = new user()
U1 = 객체
-시스템 내의 객체와 이들 간의 관계를 표현
-특정 시점에서 시스템의 인스턴스를 시각화 한다.
컴포넌트 다이어그램 시스템의 물리적 구조, 즉 컴포넌트와 그 상호작용을 표현
소프트웨어 컴포넌트, 인터페이스, 의존성 등을 나타낸다
배치 다이어그램 시스템의 물리적 배치와 구성요소들 간의 관계를 표현
하드웨어, 네트워크, 소프트웨어 구성 요소의 배치를 시각화 한다
복합체 구조 다이어그램 시스템 내의 복합구조를 표현
클래스나 컴포넌트의 내부구조와 상호작용을 나타내다
패키지 다이어그램 시스템의 패키지와 이들간의 관계를 표현
클래스와 패키지의 그룹화 및 이들 간의 관계를 시각화 한다

2)    행위 다이어그램 기능들이 어떻게 동작, 상태가 어떻게 바뀌는 지

종류 설명
유스케이스 다이어그램 -기능을 표현 -시스템의 기능과 사용자 간의 상호작용을 표현
-시스템이 수행해야할 기능과 사용자의 요구사항을 문서화 하는 데 사용
-구성요소: 액터, 유스케이스(기능), 시스템
순차 다이어그램
(
시간의 순서에 따라 표현)
-객체간의 상호작용을 시간 순서에 따라 표현
-구성요소: 활성객체, 메시지, 생명선,제어 사각형
-메시지 유형: 동기 메시지, 비동기 메시지, 반환 메시지, 자체 메세지
커뮤니케이션 다이어그램 -객체 간의 상호작용과 통신을 표현
-시간의 흐름보다는 객체간의 관계와 통신에 중점을 둔다
상태 다이어그램 -객체의 생명주기 동안의 상태변화를 표현
-객체의 상태변화와 외부 또는 내부 이벤트에 대한 반응을 나타낸다
활동 다이어그램 -시스템의 프로세스 또는 워크 플로우를 표현
-비즈니스 프로세스 모델링에 일반적으로 사용
상호작용 다이어그램 -시스템의 상호작용을 하나의 고수준 워크 플로우로 표현
-활동 다이어그램과 순차 다이어그램의 혼합 형태
타이밍 다이어그램 -객체의 행동과 시간에 따른 상호작용을 표현
-실시간 시스템이나 복잡한 상호작용을 표현하는 데 사용

- 주요 다이어그램

(1)   클래스 다이어그램

1)    개념

자기만의 속성과 일정한 행동(예를 들어 get user id)으로 구성

여러 개의 클래스들은 서로 연관이나 상속, 의존 관계 등으로 서로 간의 상호작용을 표현

2)    접근 제한자 표현법

표기법 접근 제한자 사용범위
- Private 해당 클래스 내에서만 접근 가능
# Protected 상속, 동일 패키지 내에서만 접근 가능
+ Public 어디서든 접근 가능

 

(2) 유스케이스 다이어그램

1)    개념

시스템과 사용자의 상호작용을 다이어그램으로 표현

사용자의 관점에서 시스템의 서비스 혹은 기능 및 그와 관련한 외부 요소를 보여준다

프로젝트에 대한 요구사항을 정의하고 세부기능을 분석한다(기능 명세)

2)    유스케이스 다이어그램 구성요소

     시스템 : 만들고자 하는 프로그램 명칭

     액터 : 시스템의 외부에 있고 시스템과 상호작용을 하는 사람, (외부)시스템을 표현

     유스케이스(기능): 사용자 입장에서 바라본 시스템의 기능

     관계: 액터와 유스케이스 사이의 의미있는 관계 (예를 들어 사용자가 글을 등록한다)

  • 연관관계: 유스케이스와 액터 간의 상호작용이 있음을 표현/유스케이스와 액터를 실선으로 연결
  • 포함 관계(include): 유스케이스를 수행할 때 반드시 실행되어야 하는 경우
  • 확장관계(EXTEND): 유스케이스를 수행할 때 특정 조건에 따라 확장 기능 유스케이스를 수행하는 경우
  • 일반화 관계(Generalization) :  유사한 유스케이스 또는 액터를 모아 추상화한 유스케이스(상속)

(1)   시퀀스 다이어그램

1)    개념 : 객체간의 상호작용 메시지 시퀀스를 시간의 흐름에 따라 나타내는 다이어그램

2)    구성요소

유형 설명
객체(object)와 생명선(lifeline) -객체(활동주체)는 직사각형으로 표현
-라이프 라인은 객체에서 이어지는 점선으로 표현
-점선은 위에서 아래로 갈수록 시간의 경과를 의미
활성박스 -생명선상에서 기다란 직사각형으로 표현
-현재 객체가 어떤 활동을 하고 있음을 의미
메시지 -인스턴스 간 주고받은 데이터
-동기 메시지(값을 받을때 까지 대기), 비동기 메시지, 자체 메시지,반환 메시지

 

(2)   상태 다이어 그램 : 한 객체의 상태 변화를 나타내는 다이어그램

 

상태 다이어그램 예시
시퀀스 다이어그램 예