소프트웨어공학_0401_이론_UML실습

지원·2025년 4월 3일
0

소프트웨어공학

목록 보기
4/11
post-thumbnail

UML을 이용한 모델링

UML(Unified Modeling Language)

시스템 개발을 위한 시각적인 설계 표기법
객체지향시스템 개발 시 산출물을 명세화, 시각화, 문서화하는데 사용

UML의 목적

개발하는 시스템을 이해하기 쉬운 형태로 표현
분석가, 설계자, 의뢰인이 효율적으로 의사소통할 수 있게 해줌

UML의 특징

  • 시각화 언어
    소프트웨어의 개념 모델을 시각적인 형태로 표현
    이를 이용해 오류 없는 원활한 의사소통이 가능

  • 명세화 언어
    소프트웨어 개발 과정의 모델을 정확하고 완전하게 명세화
    각 다이어그램의 기호는 의미를 담고 있으며, 추상적이나 고유의 특성을 가짐

  • 구축 언어
    다양한 프로그래밍 언어로 표현이 가능하며 코드 변환을 지원
    이미 구축된 소스코드를 UML로 역변환하여 분석하는 역공학도 가능

  • 문서화 언어
    CASE 툴을 이용하여 설계 내용을 자동으로 문서화할 수 있음

UML과 모델링

개발하고자 하는 프로그램을 시각적으로 표현하는 것이며,
이때 의뢰자의 요구에 맞게 쉽게 수정해서
결과적으로 유지보수 기간을 줄여 생산성을 높일 수 있음

UML과 모델링의 중요성

  • 시각적 이해
  • 효율적 의사소통
  • 유지보수 향상

객체 지행의 개념

  • 객체(Object)
  • 클래스(Class)
  • 메시지(Message)

객체와 클래스의 구조

클래스의 구성요소

  • 속성 클래스가 가진 데이터
  • 메서드 클래스가 수행할 수 있는 동작
  • 접근 제어자: public, private, protected 등

객체의 특성

  • 상태(State)
    객체의 현재 데이터 값

  • 행동(Behavior)
    객체가 수행할 수 있는 동작

  • 식별성(Identity)
    각 객체를 구별하는 고유한 특성

클래스 다이어그램
UML에서 클래스는 세 부분으로 나누어진 직사각형으로 표현
위쪽은 이름, 중간은 속성, 아래쪽은 메서드

객체지향의 특징: 추상화

추상화
복잡한 현실에서 필요한 부분만 추출하여 단순화하는 과정

객체지향의 특징: 캡슐화

정보 은닉: 내부 구현을 외부로부터 감추어 보호

데이터와 기능의 통합: 데이터와 처리 담당 오퍼레이션이 한 틀 안에서 결합되어 객체라는 단위로 묶임

구현 변경 용이성: 내부 구현 변경이 외부에 영향을 미치지 않음

유지보수 향성: 독립성, 이식성이 향상되고 재사용 용이

객체지향의 특징: 다형성

다형성의 개념: 여러 클래스에 같은 이름의 함수가 존재하지만 동작은 다르게 수행하는 것

다형성의 구현: 하위 클래스에서는 그들만의 고유한 속성과 오퍼레이션을 재정의할 수 있음

메서드 오버라이딩: 객체지향언어에서 메서드 오버라이딩방식으로 구현
다형성의 이점: 코드의 유연성과 확장성이 향상되고 유지보수가 용이

추상클래스의 개념과 특징

추상클래스
클래스의 명칭과 메서드는 있으나 메서드의 처리 내용은 없음

상속을 통해서 메서드가 구현

  • 추상 메서드 외에 일반적인 속성과 메서드를 가질 수 있음
  • 메서드와 다형성을 지원
  • 객체 생성이 불가능

인터페이스의 개념과 특징

  • 인터페이스의 구성
  • 다중 상속 지원
  • 계약 명세

모델링의 개념

모델링
시스템을 구축할 때 개발자가 고민하고 결정하는 모든 활동

모델의 의미
모델링의 결과물, 시스템의 구조와 동작을 표현

CASE 툴
모델링을 전문적으로 지원하는 도구
StarUML, 로즈, 투게더 등
모델 작성, 문서화, 코드 생성 등의 기능을 제공

모델링 방법론

부치 방법론(Booch Method)
설계 중심의 방법론
시스템을 여러 뷰로 분석하여 다이어그램으로 표현
객체 지향 방법론에 대한 광범위한 이론적 배경을 제시

야콥슨의 OOSE
유스케이스를 강조한 방법론
유스케이스는 외부 행위자와 상호작용하는 시스템의 요구 사항을 정의

럼바의 OMT와 UML

OMT(Object-Modeling Technique)

  • 객체 모델
    필요한 객체를 찾고, 객체의 속성과 객체 간의 관계 규명
  • 동적 모델
    객체 행위와 상태를 포함하는 생명주기를 나타냄
  • 기능 모델
    객체 변화로 인해 다른 상태로 전이 시 수행되는 동작들을 기술

UML의 통합
부치 방법론, OOSE, OMT를 하나로 통합한 방법론

UML의 구성요소

  • 사물
  • 관계
  • 다이어그램

UML의 정적 사물

정적 사물
모델의 구조적 요소를 표현하는 명사

  • 클래스, 인터페이스, 통신, 컴포넌트, 패키지, 노드

클래스(Class)
동일한 속성, 오퍼레이션, 관계, 의미를 공유하는 객체를 기술한 것
직사각형으로 표시

인터페이스(Interface)
클래스나 컴포넌트의 서비스를 명세화하는 오퍼레이션 모음

UML의 정적 사물(계속)

통신(Communication)
서로 다른 요소와 역할이 모여 교류를 정의

컴포넌트(Component)
전체 시스템을 구성하는 단위
독립적으로 개발되고 배포되며, 조립과 교환이 가능한 소프트웨어 산출물

UML의 정적 사물(추가)

패키지(Package)
요소를 그룹으로 묶는 개념적 단위
정적 사물이나 동적 사물도 하나의 패키지에 포함될 수 있음

탭이 달린 폴더 형태

노드(Node)
실행할 때 존재하는 물리적 요소
전산 자원을 나타내고 일정한 메모리와 처리 능력을 가짐
컴포넌트가 노드에 존재하며, 노드 간 이동이 가능

육면체로 표시

UML의 동적 사물

동적 사물
모델의 동적인 부분을 동사로 표시

교류(Interaction)
목적달성을 위해 특정 문맥에 속한 객체들 간의 메시지로 구성된 동작을 의미

직선으로 표시

유스케이스
시스템이 수행하는 활동들을 순차적으로 기술
액터(Actor)에게 의미 있는 결과 값을 제공

실선 타원으로 표시

UML의 상태 머신

상태 머신(State machine)
외부 이벤트에 대한 객체의 상태와 상태 변화 순서를 기술

  • 상태전이: 상태에서 다른 상태로의 흐름
  • 사건: 전이를 유발하는 것
  • 활동: 전이에 따른 응답

UML의 주해사물

주해사물
모델링에 직접 참여하지는 않지만, 필요한 정보를 표시하기 위해 사용
노트(Note)
첨부되는 주석이나 제약을 기술
모서리가 접힌 직사각형으로 표현

UML의 의존 관계

의존(Dependency)관계
두 사물 간의 의미적 관계
의존하는 사물을 향하는 점선 화살표로 표현

UML의 연관 관계 다중성

다중성(Multiplicity)
객체 하나에 몇 개의 객체가 연결되어 있는지를 밝히는 것

UML의 실체화 관계

실체화 관계
한 객체가 다른 객체에게 오퍼레이션을 수행하도록 지정하는 의미적 관계

인터페이스와 해당 인터페이스에 서비스를 제공하는 클래스나 컴포넌트 사의 관계를 지정

  • 클래스는 2개 이상의 인터페이스를 실체화할 수 있음
  • 인터페이스는 2개 이상의 클래스로부터 실체화될 수 있음

UML 다이어그램 종류

다이어그램

  • 정적 다이어그램
    -- 클래스 다이어그램
    -- 컴포넌트 다이어그램
    -- 배치 다이어그램
    -- 패키지 다이어그램

  • 동적 다이어그램
    -- 유스케이스 다이어그램
    -- 순차 다이어그램
    -- 통신 다이어그램
    -- 활동 다이어그램
    -- 상태 다이어그램

    UML 뷰의 개념과 종류

    유스케이스 뷰(요구사항 뷰)
    외부 액터에 의해 인식되는 시스템의 기능 요구 사항을 보여주는 관점
    사용자가 시스템으로부터 원하는 기능이 '무엇'인지를 정의

  • (ppt UML 뷰의 개념과 종류 그림 참고)

UML의 설계 및 프로세스 뷰

설계 뷰

시스템 내부의 클래스와 컴포넌트를 파악해 기술

프로세스 뷰

설계 뷰와 마찬가지로 시스템 내부의 구조에 중점을 두고 기술
그러나 독자적인 제어 스레드를 가질 수 있는 클래스를 중점으로 함

UML의 구현 및 배치 뷰

구현 뷰

시스템 구현 형태를 나타내기 위해 구현 모듈과 그들의 관계, 각종 파일의 의존 관계 등을 보여줌
컴포넌트 다이어그램으로 표현

배치 뷰

컴퓨터와 컴퓨터 간의 통신 방법에 중점을 둠
배치 다이어그램으로 표현

UML특성: 공통 분할

클래스와 객체의 분할

  • 추상개념을 구체적으로 명시
  • 객체 지향의 핵심 원리를 다이어그램으로 표현

인터페이스와 구현의 분할

  • 계약과 계약의 구체적인 실현을 명시
  • 인터페이스를 통한 소프트웨어 컴포넌트 간의 상호작용을 정의

UML특성: 확장 메커니즘

스테리오 타입 << >>
기본 요소 외에 새로운 요소를 만들어내기 위한 확장 메커니즘

꼬리표 값 {tag=value}
UML 구성 요소의 속성을 확장
구성 요소의 명세서에 새로운 정보 생성을 도움

제약 {}
이전 규칙을 수정하거나 새롭게 생성할 수 있음
모델 요소에 특별한 조건이나 규칙을 추가

액터와 유스케이스의 개념

액터(Actor)
개발할 시스템 외부의 존재로, 이벤트 흐름을 시작하게 하는 객체

유스케이스(UseCase)
시스템 내부에 해당되는 단위 기능으로 사용자 관점에서 시스템을 모델링

유스케이스 다이어그램의 관계

(ppt 참고하기)

확장 관계와 포함 관계의 비교

확장 관계 : 조건부 분기
포함 관계 : 항상 호출

효과적인 유스케이스 다이어그램 작성법

1. 시스템 상황 분석
시스템 상황을 분석하여 문제 기술서 작성

2. 액터 식별
시스템과 상호작용하는 모든 행위자와 그들의 책임을 파악

3. 유스케이스 식별
각 액터가 시스템에 요구하는 기능을 확인

4. 유스케이스 다이어그램 작성
액터와 유스케이스 관계를 설정

5. 유스케이스 명세서 작성
유스케이스명, 액터명 및 개요를 기술
사전 및 사후조건과 제약사항들을 식별

6. 유스케이스 실체화
구현 시스템의 논리적 구성 요소인 클래스를 식별하고 통신 관계를 파악하는데 중점을 둠

UML실습

액터

  • 고객
  • 관리자
  • 카드승인시스템

기능

  • 회원가입
  • 대여
  • 반납
  • 연체관리
  • 회원확인
  • 연체금 표시
  • 도서코드입력
  • 도서등록
  • 도서삭제
  • 대여가능확인
  • 연체료납부
  • 대여료납부
  • 현금결제
  • 카드결제

조건이 붙는 것은 Exclude
늘 항상 시행하는 것은 include

0개의 댓글