시스템 개발을 위한 시각적인 설계 표기법
객체지향시스템 개발 시 산출물을 명세화, 시각화, 문서화하는데 사용
개발하는 시스템을 이해하기 쉬운 형태로 표현
분석가, 설계자, 의뢰인이 효율적으로 의사소통할 수 있게 해줌
시각화 언어
소프트웨어의 개념 모델을 시각적인 형태로 표현
이를 이용해 오류 없는 원활한 의사소통이 가능
명세화 언어
소프트웨어 개발 과정의 모델을 정확하고 완전하게 명세화
각 다이어그램의 기호는 의미를 담고 있으며, 추상적이나 고유의 특성을 가짐
구축 언어
다양한 프로그래밍 언어로 표현이 가능하며 코드 변환을 지원
이미 구축된 소스코드를 UML로 역변환하여 분석하는 역공학도 가능
문서화 언어
CASE 툴을 이용하여 설계 내용을 자동으로 문서화할 수 있음
개발하고자 하는 프로그램을 시각적으로 표현하는 것이며,
이때 의뢰자의 요구에 맞게 쉽게 수정해서
결과적으로 유지보수 기간을 줄여 생산성을 높일 수 있음
클래스의 구성요소
객체의 특성
상태(State)
객체의 현재 데이터 값
행동(Behavior)
객체가 수행할 수 있는 동작
식별성(Identity)
각 객체를 구별하는 고유한 특성
클래스 다이어그램
UML에서 클래스는 세 부분으로 나누어진 직사각형으로 표현
위쪽은 이름, 중간은 속성, 아래쪽은 메서드
추상화
복잡한 현실에서 필요한 부분만 추출하여 단순화하는 과정
정보 은닉: 내부 구현을 외부로부터 감추어 보호
데이터와 기능의 통합: 데이터와 처리 담당 오퍼레이션이 한 틀 안에서 결합되어 객체라는 단위로 묶임
구현 변경 용이성: 내부 구현 변경이 외부에 영향을 미치지 않음
유지보수 향성: 독립성, 이식성이 향상되고 재사용 용이
다형성의 개념: 여러 클래스에 같은 이름의 함수가 존재하지만 동작은 다르게 수행하는 것
다형성의 구현: 하위 클래스에서는 그들만의 고유한 속성과 오퍼레이션을 재정의할 수 있음
메서드 오버라이딩: 객체지향언어에서 메서드 오버라이딩방식으로 구현
다형성의 이점: 코드의 유연성과 확장성이 향상되고 유지보수가 용이
추상클래스
클래스의 명칭과 메서드는 있으나 메서드의 처리 내용은 없음상속을 통해서 메서드가 구현
- 추상 메서드 외에 일반적인 속성과 메서드를 가질 수 있음
- 메서드와 다형성을 지원
- 객체 생성이 불가능
모델링
시스템을 구축할 때 개발자가 고민하고 결정하는 모든 활동
모델의 의미
모델링의 결과물, 시스템의 구조와 동작을 표현
CASE 툴
모델링을 전문적으로 지원하는 도구
StarUML, 로즈, 투게더 등
모델 작성, 문서화, 코드 생성 등의 기능을 제공
부치 방법론(Booch Method)
설계 중심의 방법론
시스템을 여러 뷰로 분석하여 다이어그램으로 표현
객체 지향 방법론에 대한 광범위한 이론적 배경을 제시야콥슨의 OOSE
유스케이스를 강조한 방법론
유스케이스는 외부 행위자와 상호작용하는 시스템의 요구 사항을 정의
OMT(Object-Modeling Technique)
UML의 통합
부치 방법론, OOSE, OMT를 하나로 통합한 방법론
정적 사물
모델의 구조적 요소를 표현하는 명사
클래스(Class)
동일한 속성, 오퍼레이션, 관계, 의미를 공유하는 객체를 기술한 것
직사각형으로 표시
인터페이스(Interface)
클래스나 컴포넌트의 서비스를 명세화하는 오퍼레이션 모음
통신(Communication)
서로 다른 요소와 역할이 모여 교류를 정의컴포넌트(Component)
전체 시스템을 구성하는 단위
독립적으로 개발되고 배포되며, 조립과 교환이 가능한 소프트웨어 산출물
패키지(Package)
요소를 그룹으로 묶는 개념적 단위
정적 사물이나 동적 사물도 하나의 패키지에 포함될 수 있음탭이 달린 폴더 형태
노드(Node)
실행할 때 존재하는 물리적 요소
전산 자원을 나타내고 일정한 메모리와 처리 능력을 가짐
컴포넌트가 노드에 존재하며, 노드 간 이동이 가능육면체로 표시
동적 사물
모델의 동적인 부분을 동사로 표시교류(Interaction)
목적달성을 위해 특정 문맥에 속한 객체들 간의 메시지로 구성된 동작을 의미직선으로 표시
유스케이스
시스템이 수행하는 활동들을 순차적으로 기술
액터(Actor)에게 의미 있는 결과 값을 제공실선 타원으로 표시
상태 머신(State machine)
외부 이벤트에 대한 객체의 상태와 상태 변화 순서를 기술
주해사물
모델링에 직접 참여하지는 않지만, 필요한 정보를 표시하기 위해 사용
노트(Note)
첨부되는 주석이나 제약을 기술
모서리가 접힌 직사각형으로 표현
의존(Dependency)관계
두 사물 간의 의미적 관계
의존하는 사물을 향하는 점선 화살표로 표현
다중성(Multiplicity)
객체 하나에 몇 개의 객체가 연결되어 있는지를 밝히는 것
실체화 관계
한 객체가 다른 객체에게 오퍼레이션을 수행하도록 지정하는 의미적 관계
인터페이스와 해당 인터페이스에 서비스를 제공하는 클래스나 컴포넌트 사의 관계를 지정
다이어그램
정적 다이어그램
-- 클래스 다이어그램
-- 컴포넌트 다이어그램
-- 배치 다이어그램
-- 패키지 다이어그램
동적 다이어그램
-- 유스케이스 다이어그램
-- 순차 다이어그램
-- 통신 다이어그램
-- 활동 다이어그램
-- 상태 다이어그램
유스케이스 뷰(요구사항 뷰)
외부 액터에 의해 인식되는 시스템의 기능 요구 사항을 보여주는 관점
사용자가 시스템으로부터 원하는 기능이 '무엇'인지를 정의
(ppt UML 뷰의 개념과 종류 그림 참고)
시스템 내부의 클래스와 컴포넌트를 파악해 기술
설계 뷰와 마찬가지로 시스템 내부의 구조에 중점을 두고 기술
그러나 독자적인 제어 스레드를 가질 수 있는 클래스를 중점으로 함
시스템 구현 형태를 나타내기 위해 구현 모듈과 그들의 관계, 각종 파일의 의존 관계 등을 보여줌
컴포넌트 다이어그램으로 표현
컴퓨터와 컴퓨터 간의 통신 방법에 중점을 둠
배치 다이어그램으로 표현
클래스와 객체의 분할
인터페이스와 구현의 분할
스테리오 타입 << >>
기본 요소 외에 새로운 요소를 만들어내기 위한 확장 메커니즘
꼬리표 값 {tag=value}
UML 구성 요소의 속성을 확장
구성 요소의 명세서에 새로운 정보 생성을 도움
제약 {}
이전 규칙을 수정하거나 새롭게 생성할 수 있음
모델 요소에 특별한 조건이나 규칙을 추가
액터(Actor)
개발할 시스템 외부의 존재로, 이벤트 흐름을 시작하게 하는 객체
유스케이스(UseCase)
시스템 내부에 해당되는 단위 기능으로 사용자 관점에서 시스템을 모델링
(ppt 참고하기)
확장 관계 : 조건부 분기
포함 관계 : 항상 호출
1. 시스템 상황 분석
시스템 상황을 분석하여 문제 기술서 작성
2. 액터 식별
시스템과 상호작용하는 모든 행위자와 그들의 책임을 파악
3. 유스케이스 식별
각 액터가 시스템에 요구하는 기능을 확인
4. 유스케이스 다이어그램 작성
액터와 유스케이스 관계를 설정
5. 유스케이스 명세서 작성
유스케이스명, 액터명 및 개요를 기술
사전 및 사후조건과 제약사항들을 식별
6. 유스케이스 실체화
구현 시스템의 논리적 구성 요소인 클래스를 식별하고 통신 관계를 파악하는데 중점을 둠
액터
- 고객
- 관리자
- 카드승인시스템
기능
- 회원가입
- 대여
- 반납
- 연체관리
- 회원확인
- 연체금 표시
- 도서코드입력
- 도서등록
- 도서삭제
- 대여가능확인
- 연체료납부
- 대여료납부
- 현금결제
- 카드결제

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