[SE] 5장 모델링

5장 모델링

[배경] 소프트웨어 요구사항 분석과 설계에서 모델링

  • 모델: 실체의 특징을 표현한 것

    예) 주택의 건축 모델
    뉴튼의 F=ma, 운동법칙의 수학 모델

  • 분석 vs. 설계:

    분석 : 고객이 원하는 시스템에 대한 설명

    설계 : 소프트웨어의 구조

    => 분석과 설계에서 시스템과 소프트웨어 구조를 설명할 때
    모델링을 이용

    cf. SE 책에 따라서 요구사항, 분석, 설계를 분리하거나
    요구사항 분석, 설계로 분리하거나
    요구사항, 분석 및 설계로 분리해서 설명하기도 한다.

소프트웨어 개발 방법론

  • 구조적 방법론 (structured method)
    소프트웨어를 순차적 실행, 조건부 실행, 반복 실행의 구조로
    궁극적으로 구현하려는 개발 방법

    SA (Structured Analysis) 구조적 분석 : DFD (data flow diagram)
    SD (Structured Design) 구조적 설계 : Structure Chart
    SP (Structured Program) 구조적 프로그램 : C, Pascal, Fortran

  • 객체지향 방법론 (object-oriented method)

    소프트웨어를 클래스의 구조와 객체 간 상호작용의 구조로
    구현하려는 개발 방법

    OOA (Object-oriented analysis) OO 분석 : UML
    OOD (object-oriented design) OO 설계 : UML
    OOP (object-oriented programming) OO 프로그램 : C++, Java, C#

  • 컴포넌트 기반 방법론 (component-based method)

    미리 잘 정의된 소프트웨어 컴포넌트 목록에서 선택 조합하여
    소프트웨어를 개발하는 방법

  • 이 강의의 주요 관심 방법론 ==> OO 방법론!
    UML (표기법 또는 언어)을 사용하여
    요구사항을 유스케이스 다이어그램으로 모델링
    분석 결과를 정적/동적 다이어그램으로 시스템을 모델링
    소프트웨어 설계 구조를 정적/동적 다이어그램으로 모델링
    분석 결과로 모델링한 정적/동적 다이어그램을
    설계 구조를 모델링한 정적/동적 다이어그램으로 매핑하는 과정이
    소프트웨어 개발의 핵심 단계

    (당연히 창의적인 요소가 필요함)

5.1 객체지향 개념

  • 객체 : 상태와 (이 상태를 읽고 쓰고 변경하는) 동작

  • 클래스 : 동일한 상태와 동작을 갖는 객체들의 집합

    객체는 클래스의 사례(instance)
    클래스는 객체의 유형(type)

    [교재 그림 5.13, 5.14] 클래스의 UML 표기법

  • 연관관계(Association) : 클래스 간의 (정적) 관계

    복잡한 시스템을 클래스와 객체로 표현할 때
    여러 클래스가 필요할 것이고
    여러 클래스들이 서로 `연관'되어 구성할 것이다.

    (A클래스와 B클래스가 연관되어 있다는 것은
    A클래스에 있는 모든 객체가 B클래스의 객체들에
    동일하게 연관되어 있음을 의미한다.)

    [교재 그림 5.16] 연관관계의 UML 표기법

  • 집합관계(Aggregation)

    예를 들어 Directory 클래스는 File 클래스를 포함하는 관계

    [그림 5.17] 집합관계의 UML 표기법
    [그림 5.18] 연관관계와 집합관계을 활용한 클래스 다이어그램 예

    cf. composition, aggregation

    composition : UML 표기법 - 검은색 다이아몬드
    aggregation : UML 표기법 - 흰색 다이아몬드

  • 상속

    일반화 관계, IsA 관계

    e.g., Hyundai 자동차 클래스, Kia 자동차 클래스와 Car 클래스의 관계

  • 의존 관계

    연관관계의 변형.

    한 클래스가 다른 클래스에서 제공하는 기능을 사용하는 점에서
    연관관계와 유사함

    두 클래스의 관계가 짧은 기간 동안 유지되면 의존 관계
    (예를 들어, 메소드 호출 동안만 A 클래스가 B 클래스를 사용)
    그렇지 않으면 연관 관계로 분류

5.2 UML

  • Unified Modeling Language

    1990년대 다양한 OO 방법론을 통합한 OO 모델링을 위한 언어 (표기법)

  • UML 다이어그램

    Structure Diagram (구조 다이어그램)

    1) 클래스 다이어그램 (Class Diagram)
    ...

    Behavior Diagram (동작 다이어그램)

    1) 유스케이스 다이어그램 (Use-case Diagram)
    2) 순차 다이어그램 (Sequence Diagram)
    3) 액티비티 다이어그램 (Activity Diagram)
    4) 상태 다이어그램 (State Machine Diagram)
    5) 커뮤니케이션 다이어그램 (Communication Diagram)
    ...

5.3 정적 모델링

  • 클래스 다이어그램
    클래스와 클래스 간의 관계로 표현된 다이어그램
    (슬라이드 예제)
    클래스 간의 관계

    연관 관계(Association)
    포함 관계(Aggregation),합성 관계(Composition)
    상속 관계(Inheritance)
    의존 관계(Dependence)

    클래스 다이어그램 작성 방법

    1) 클래스 파악

    Entity class
    (who typically represents things
    that are to be stored in a database and
    persistent throughout the duration of the
    application)
    Boudnary class
    (who creates the interface that the user sees
    and interacts with as the software is used.)
    Control class
    (who manages 1) the creation or update of
    entity objects, 2) the instantiation of boundary
    objects as they obtain information from entity objects,
    3) complex communication between sets of objects, and
    4) validation of data communicated between objects or
    between the user and the application)

    2) 클래스 간의 관계 파악

    3) 클래스의 속성과 연산 지정

    [연습] 교재 [그림 4.12] 유스케이스 다이어그램으로부터
    클래스 다이어그램 유도

    [연습] 교재 연습문제 5.11

5.4 동적 모델링

  • 시퀀스/순서 다이어그램
    객체들의 메시지 교환을 통해 시스템의 동작을 표현
    [표기법]

    1) 객체 표현 [그림 5.31]
    2) 기본 요소 [표 5.3]

    [연습] 교재 연습문제 5.7

  • 커뮤니케이션 다이어그램

    객체의 상호작용을 정적으로 보여주는 다이어그램

  • 상태 다이어그램
    객체가 가질 수 있는 상태와 외부 이벤트에 의한 변화를
    표현하는 다이어그램
    [표기법]

    1) 표 5.4

  • 액티비티 다이어그램
    액티비티 사이의 제어 흐름을 보여주는 다이어그램
    액티비티 (문장, 서브 시스템 등_
    [표기법]
    둥근 사각형 - 액티비티
    화살표 - 액티비티 전환
    굵은 막대 - 제어 흐름의 동기화
    슬라이드 두 가지 예제

5.5 모델링 도구

  • StarUML

  • EA (Enterprise Architect)