본문 바로가기
정보처리기사/필기

[정보처리기사] Part01-01-3. 분석모델 확인 (1)

by 채연2 2022. 2. 24.

* 모델링

☞ 실세계 물리현상을 특정 목적에 맞춰 이용하기 쉬운 형식으로 표현하는 일 의미

 

    ▶ 개념 모델링 (Conceptual Modeling)

        - 실세계 문제에 대한 모델링이 SW 요구사항 분석 핵심

        - 문제 도메인의 엔티티들과 그들의 관계 및 종속성 반영

 

    ▶ UML (Unified Modeling Language)

    - 객체 지향 SW 개발 과정에서 산출물을 명세화, 시각화, 문서화 할 때 사용되는 모델링 기술과 방법론 통합해 만든 표준화된 범용 모델링 언어

 

        ■ UML 특징

            □ 가시화 언어

                - 개념 모델 작성 시 오류 적고 의사소통 용이케 함

            □ 구축 언어

                - 다양한 객체지향 프로그램 언어로 변환 가능 (순공학, 역공학)

            □ 문서화 언어

                - 시스템에 대한 평가, 통제, 의소소통 문서

            □ 명세화 언어

                - 단순 표기법 아닌 구현에 필요한 개발적 요소 및 기능에 대한 명세 제공

 

        ■ UML 구성과 내용

            □ View

                - 모델화된 시스템의 서로 다른 모형 제공

            □ Diagram

                - View 내용을 나타내기 위한 9가지 다이어그램 제공

            □ 모델요소 (Model Element)

                - 객체 지향 개념을 표현하기 위해 사용되는 요소. 클래스, 속성, 오퍼레이션으로 구성

            □ General Mechanism

                - 모델 요소에 대해 주석 정보와 의미 제공

 

        ■ UML 다이어그램 종류별 설명

            □ 구조적 (Structural) 다이어그램

                ≫ Class

                    - 시스템 내 클래스들 정적 구조 표현

                    - 클래스는 객체들 집합으로 속성과 동작으로 구성

                ≫ Object

                    - 클래스의 여러 Object 인스턴스 나타내는 대신 실제 클래스 사용

                    - 관계있는 모든 인스턴스 표현

                ≫ Component

                    - 코드 컴포넌트에 바탕을 둔 코드의 물리적 구조 표현

                    - 논리적 클래스 혹은 클래스 자신의 구현에 대한 정보 포함하고, 실질적인 프로그래밍 작업에 사용

                ≫ Deployment

                    - 시스템 HW와 SW 간 물리적 구조 표현하며, 실질적인 컴퓨터와 Device 간 관계 표현하는데 이용

                    - 컴포넌트 사이의 종속성 표현

                ≫ Package (UML 2.0에서 추가)

                    - 시스템 계층적인 구조 표현

                    - 클래스들로 이루어진 패키지와 그들 간 의존 관계 보여줌

                ≫ Composite Structure (UML 2.0에서 추가)

                    - 사용자 입장에서 본 시스템 행동 표현

                    - 클래스 내부 구조 파악에 용이

            □ 행위 (Behavioral) 다이어그램

                ≫ Use Case

                    - 사용자 입장에서 본 시스템 행동 표현

                    - Use Case들은 시스템 기능적인 요구 정의

                ≫ State

                    - 클래스 객체가 가질 수 있는 모든 가능한 상태와 상태 간 전이 표현

                    - 진입 조건, 탈출 조건, 상태 전이에 필요한 사건 등 자세한 사항 기술

                    - 설계 단계에서 클래스 객체의 동적인 행동 방식 표현하는데 사용

                ≫ Activity

                    - 행위의 순서적 흐름 표현

                    - 순서도나 병렬적인 처리 요하는 해우이 표현할 때 사용

            □ 상호작용 (Interaction) 다이어그램

                ≫ Sequence

                    - 객체와 객체 간 상호작용을 메시지 흐름으로 표현

                    - 오브젝트 사이에 메시지 보내는 시간 또는 순서 보여주기 위해 사용

                ≫ Conmmunication

                    - 상호작용에 참여하는 객체/컴포넌트 간 관계 명시적으로 표현

                    - 

                ≫ Interaction Overview (UML 2.0.에서 추가)

                    - Activity Diagram과 Sequence Diagram 혼합

                    - 상호작용에 대한 제어 흐름 표현

                ≫ Timing (UML 2.0에서 추가)

                    - 시간적 제약과 객체 상태 변화 표현

                    - 인스턴스 간 상태 전이와 상호 작용을 시간 제약으로 표현

 

            ㄱ. 클래스 다이어그램

                - 객체 지향 모델링에서 가장 자주 사용되는 방법

                - 객체 멤버, 연산의 구성과 객체들과의 연관, 의존, 상속 등 정적인 관계 나타내는 UML 다이어그램

                ● 클래스 구성 요소

                    ○ 클래스 명 (Class Name)

                        - 공통 속성, 연산, 관계, 의미를 객체들의 집합으로 정의

                    ○ 속성 (Attribute)

                        - 클래스 속성, 접근지정자, 데이터 타입 등 구조적 특징 표현

                    ○ 연산 (Operation)

                        - 메서드라고도 하며 클래스에서 정의한 동작 호출하는 연산자, 접근지정자, 리턴타입, 파라미터 표현

 

                ● 클래스 다이어그램 표기법

                    ○ -

                        - Private : 해당 클래스 내에서만 접근 가능

                    ○ #

                        - Protected : 동일 패키지 내에서만 접근 가능 

                    ○ +

                        - Public : 어디서든 접근 가능

                    ○ 명칭 Attribute

                        - 의미있는 명사형으로 표시

                    ○ 명칭 Operation

                        - 행위 나타내는 동사형으로 표시

 

                ● JAVA 접근 제한자

                    ○ private

                        - 클래스 선언하고, 그 클래스 구성하는 객체에 대해 외부에서는 사용 불가하고 해당 클래스에서만 접근 가능

                    ○ public

                        - 클래스 선언하고, 그 클래스 구성하는 객체에 대해 외부에서는 사용 가능

                    ○ protected

                        - 클래스 선언하고, 그 클래스 구성하는 객체에 대해 동일 패키지 내에서만 접근 가능

 

                ● 클래스 간 관계

구분 설명 표기법
일반화 관계
Generalization
(IS-A)
- 객체지향 개념에서 상속관계
- UML에서는 일반화 관계로 모델링
- 한 클래스가 다른 클래스를 포함하는 상위 개념
- 상위와 하위 관계 의미하며 하위는 상위의 공통점 상속
- 클래스를 상속받아 자식 클래스에서 사용

예) 지우개, 노트, 연필 → 학용품
Class 학용품 { }
Class 지우개 extends 학용품 { }

지우개 Class는 학용품 Class 속성과 행위를 상속 받음
연관 관계
Association
(HAS-A)
- 클래스들이 상호 메시지 주고 받는 관계 표현
한 클래스가 다른 클래스와 영속적인 연관성 맺을 때 사용

예) 부서 → 부서원
Public Class 부서원 { }
Public Class 부서 {
    Private 부서원 employee;
    employee.setName("kkk");
}

Class 부서는 내부에 Class 부서원 생성하여 행위 호출
의존 관계
Dependency
(use)
- 연관 관계의 특수 형태로 한 클래스가 다른 클래스에 의존적인 연관 관계 나타낼 때 사용

예) 주문 → 제품
Public Class 제품 {
    int cnt;
    String name;
}
Public Class 주문 {
    제품 prod = new 제품();
    prod.setCnt(100);
    prod.setName("apple");
}

Class 주문은 Class 제품에 의존 관계에 있음. 만일 Class 제품 속성이 바뀌면 Class 주문 역시 행위 수정해야 함
집합 관계
(집단/집약 관계)
Aggregation
- 연관 관계의 특수 형태로 클래스들 사이의 전체와 부분의 관계 (part of) 나타냄
- 하나의 클래스가 다른 클래스를 포함하는 관계
- 전체 객체 라이프타임과 부분 객체 라이프타임은 독립적이며, 전체 객체가 사라져도 부분 객체는 계속 생존 가능

예) 컴퓨터 - 마우스, 모니터, 키보드, 본체
Public Class 컴퓨터 {
    Private Vector <모니터> vertorM;
}
Class 모니터 { }

Class 컴퓨터는 Class 모니터를 Vector 형태로 많이 소유 가능
합성 관계
(복합/포함 관계)
Composition
- 연관 관계의 특수 형태로 클래스들 사이 전체와 부분의 관계 (part of) 나타냄
- 전체 객체 라이프타임과 부분 객체 라이프타임 동일하여, 전체 객체 없어지면 부분 객체도 없어짐

예) 본체 - CPU, RAM, 메인보드
Public Class 본체 {
    Private Vector<CPU> vectorCPU;
    vectorCPU.close();
    return;
}
Class CPU { }
실체화 관계
Realization
(implement)
- 하나의 클래스가 다른 클래스를 보다 구체적으로 실체화하는 관계
- 인터페이스 클래스를 다른 클래스가 구현해주는 관계가 좋은 관계

예) 빌딩 컨셉 → 설계도면
Public Class interface 설계도면 { }
Public Class 빌딩컨셉 implements 설계도면 { }

 

            ㄴ. 시퀀스 다이어그램

                - 문제 해결에 필요한 객체 정의하고 객체 간 주고받는 메시지 순서를 시간 흐름에 따라 보여줌

               

 

                ● 시퀀스 다이어그램 구성요소

구성요소 설명 표기법
액터
(Actor)
시스템과 상호작용하는 사용자, 외부 시스템 표현
활성 객체
(Object)
메시지 상호 작용에 참여하는 대상 표현
메시지
(Message)
액터, 활성 객체 간 의사소통 표현
생명선
(Life Line)
객체 생존기간 의미
제어 사각형
(Control Rectangles)
- 객체가 활성화 되어 있는 기간 표현
- 객체가 제어를 가지고 정보 처리하거나 다른 정보 기다리고 있는 것 표현

 

                ● 시퀀스 다이어그램 메시지 동작 종류

종류 설명 표기법
동기
(Synchronous)
메시지로부터 전송된 임의 메시지들이 전송 완료 시 중단됨 표현
반환
(Return)
제어 흐름이 호출 활성화 객체로 반환됨 표현
비동기
(Asynchronous)
활성 객체가 응답 기다리지 않고 메시지 전송하는 것 표현
평판
(Flat)
동기와 비동기 구분 없음

 

            ㄷ. 액티비티 다이어그램

                - 객체 상태가 아닌 로직이나 조건에 따른 처리 흐름을 순서에 따라 정의

                - 순서도와 모양 비슷하지만 객체 지향 모델링에 필요한 객체 행위 구체적 표현하기 위해 개선시킨 형태

                - 시퀀스 다이어그램에서 표현하지 못한 객체나 시스템 역할에 대한 행위 구체적 표현 가능

                ● 액티비티 다이어그램 구성요소

구성요소 설명 표기법
활동 상태
(Active State)
행위나 작업 등 활동 상태 표현
초기 상태
(Initial State)
처리 흐름 시작 지점 표현
종료 상태
(Final State)
처리 흐름 종료되는 지점 표현
전이
(Transition)
하나의 상태에서 다른 상태로 제어 흐름 표현
동기화
(Synchronization)
병렬 수행 시작되거나 모여짐 표현
분기
(Decision)
활동 흐름 조건에 따라 분기됨 표현
구획면
(Swimlane)
시스템이나 업무 담당자 역할 구분 표현
신호
(Signal)
활동 진행 중 신호 보내는 방식 표현
- 송신 신호 : 객체로 신호를 송신하여 객체 조작
- 수신 신호 : 객체에서 신호 수신하여 처리 흐름 시작

 

 

 

 

☞☞☞ Part01-01-3. 분석모델 확인 (2)

320x100

댓글