본문으로 건너뛰기

소프트웨어 테스팅 및 검증 — Week 5: 구조 모델링 & 클래스 다이어그램

과목명: 소프트웨어 테스팅 및 검증
담당교수: 이우진 (경북대학교 IT대학 컴퓨터학부, SW Testing 연구실)
강의자료: 2026_SWTesting5ClassDiagram
참고문헌: Stephen R. Schach, Introduction to Object-Oriented Analysis and Design with UML and The Unified Process, McGraw-Hill, 2004


1. 구조 모델링 개요 (Structural Modeling)

1.1 목적

  • 애플리케이션 도메인에서 중요한 사물, 아이디어, 개념을 객체로 표현
  • 클래스 다이어그램과 객체 다이어그램의 작성 규칙·스타일 가이드라인 이해
  • 구조 모델 간의 관계 파악

1.2 UML 관점에서의 구조 모델

UML의 Structural Viewpoint에 해당하는 다이어그램: Component Diagram, Package Diagram, Class Diagram, Object Diagram, Deployment Diagram, Composite Structure Diagram

1.3 구조 모델이 표현하는 것

시스템 객체와 그 관계를 표현하며, 대상은 People(역할), Places, Things, Transaction 등이다. 핵심 목표는 문제 도메인의 핵심 데이터를 발견하고 객체의 구조 모델을 구축하는 것이다.


2. 클래스 (Class)

2.1 클래스 다이어그램

시스템의 클래스와 그 관계를 보여주는 정적(static) 다이어그램이다. 무엇이 상호작용하는지를 보여주지만, 상호작용 시 무엇이 일어나는지는 보여주지 않는다.

클래스 구성: Class Name, Attributes, Operations, Responsibility(선택)

2.2 속성 (Attribute)

문법: [visibility] name : type-expression [= initial-value]

가시성기호의미
public+어디서나 접근 가능
private해당 클래스 내부에서만 접근
protected#해당 클래스 및 하위 클래스에서 접근

예: + modelName : String, - modelRegNum : Integer = 10, # accessCount : Integer

2.3 Static Instance

클래스 수준에서 공유되는 속성(static)은 모든 인스턴스가 하나의 값을 공유한다. 예를 들어 instanceCount는 객체를 여러 개 생성해도 클래스 전체에서 하나만 존재한다.

2.4 오퍼레이션 (Operation)

문법: [visibility] name([parameter-list]) [: return-type]

스타일예시
UML+ addClothes(n : Cloth), + getClothes(index : int) : Cloth
Java+ void addClothes(Cloth n), + Cloth getClothes(int index)

3. 클래스 간 관계 (Relationships)

UML에서 세 가지 기본 관계가 존재한다.

3.1 일반화 (Generalization)

  • Parent-Child 관계 (IS-A)
  • 자식 클래스는 부모의 모든 속성·오퍼레이션을 상속
  • Abstract Class: 하나 이상의 추상 오퍼레이션 보유, 객체 생성 불가 (이탤릭체로 표기)
  • Concrete Class: 모든 오퍼레이션 구현 완료, 객체 생성 가능

3.2 집합 (Aggregation)

유형표기설명
강한 집합 (Composition)◆ (채워진 다이아몬드)Whole과 Part가 동시에 생성/소멸, Part는 공유 불가
약한 집합 (Aggregation)◇ (빈 다이아몬드)Whole과 Part-Of 관계이나, Part가 다른 Whole과 공유 가능

3.3 연관 (Association)

클래스 간 관계를 나타내며, 다음 요소를 포함한다:

  • Navigability: 연관의 방향
  • Role Name: 관계에서 각 클래스의 역할
  • Multiplicity: 관련 객체의 수

다중성 (Multiplicity) 표기:

표기의미
1정확히 1개
0..10개 또는 1개
* 또는 0..*0개 이상
1..*1개 이상
2..*2개 이상

예: Author 1 --uses--> 1..* Computer — 한 명의 Author가 하나 이상의 Computer를 사용

3.4 의존 (Dependency)

한 클래스의 변경이 다른 클래스에 변경을 강제할 수 있는 관계이다. 매개변수 클래스나 반환 타입 클래스 등이 해당하며, 점선 화살표로 표기한다.

3.5 제약 (Constraints)

설계의 모든 구현이 만족해야 하는 조건이다. 중괄호 안에 작성한다.


4. 인터페이스와 스테레오타입

4.1 인터페이스 (Interface)

오퍼레이션 시그니처의 집합이다. C++에서는 순수 가상 멤버만 가진 추상 클래스로 구현한다.

4.2 스테레오타입 (Stereotype)

UML을 확장하는 방법으로, 기존 모델 요소로부터 새로운 종류의 모델 요소를 생성한다. <<interface>>, <<entity>>, <<boundary>>, <<control>> 등이 있다.


5. 클래스 다이어그램 vs 객체 다이어그램

구분클래스 다이어그램객체 다이어그램
표현 대상클래스와 관계 (타입 수준)특정 시점의 인스턴스와 링크
성격일반적·추상적구체적·예시적
표기ClassNameobjectName : ClassName (밑줄)

6. CRC 카드를 활용한 클래스 식별

6.1 CRC 카드 (Class-Responsibility-Collaboration)

구성요소설명
Class Name클래스 이름
Responsibilities — Knowing속성값과 관계를 아는 것
Responsibilities — Doing오퍼레이션을 실행하는 것
Collaborations요청을 처리하기 위해 함께 작동하는 객체들

6.2 객체 식별 및 구조 모델링 7단계

  1. Use Case에 대한 텍스트 분석으로 CRC 카드 작성
  2. Common Object List 접근법으로 후보 클래스·속성·오퍼레이션·관계 브레인스토밍
  3. CRC 카드를 사용해 각 Use Case 역할 수행(Role-play)
  4. CRC 카드 기반으로 클래스 다이어그램 생성
  5. 누락되거나 불필요한 클래스·속성·오퍼레이션·관계 검토
  6. 유용한 패턴 통합
  7. 구조 모델 최종 검토

6.3 객체 식별 방법

방법설명
텍스트 분석명사 → 클래스 후보, 동사 → 오퍼레이션 후보
브레인스토밍여러 사람이 잠재적 클래스를 제안
Common Object ListTangible things, Incidents(사건), Roles(역할), Interactions(트랜잭션)

7. Unified Process의 3가지 클래스 유형

클래스 유형역할계층예시
Entity오래 유지되는 정보 모델링Persistency LayerAccount, Painting, Student
Boundary시스템과 Actor 간 상호작용 (입출력)Presentation LayerUser Interface, Report 클래스
Control복잡한 계산·알고리즘 모델링Business Logic LayerCompute Price, Compute Trends

8. 사례 연구: Osbert Oglesby 정보 시스템

8.1 시스템 개요

미술 딜러 Osbert의 노트북에서 실행되는 정보 시스템으로, 그림의 최대 구매 가격 결정과 미술 시장의 새로운 트렌드 감지를 목표로 한다.

8.2 클래스 다이어그램 도출 과정

Step 1: 명사 추출 — 시스템 설명 문단에서 명사를 추출하고 후보 분류

판단명사이유
제외effectiveness, process, information추상 명사 — 엔티티 클래스 가능성 낮음
제외buying, selling동사에서 파생 — 오퍼레이션 후보
제외report오래 유지되지 않음 — Boundary 클래스
제외work of artpainting의 동의어
채택painting, masterpiece, masterwork, other paintingEntity 클래스 후보

Step 2~4: 반복적 클래스 다이어그램 정제

1차: Painting(base) → Masterpiece, Masterwork, Other Painting(sub) 2차: 가격 알고리즘 반영 — Masterwork가 Masterpiece의 속성도 필요 → 상속 구조 조정 3차: Auctioned Painting 클래스 추가 (유사도 비교용) 4차: Fashionability 클래스 추가 (작가별 유행 계수)

Step 5: Boundary 클래스 추출 — User Interface, Purchases Report, Sales Report, Future Trends Report

Step 6: Control 클래스 추출 — Compute Masterpiece Price, Compute Masterwork Price, Compute Other Painting Price, Compute Future Trends

8.3 최종 클래스 다이어그램 구성

  • Entity: Gallery Painting, Masterpiece, Masterwork, Other Painting, Auctioned Paintings, Fashionability
  • Boundary: User Interface, Sales Report, Purchases Report, Future Trends Report
  • Control: Compute Masterpiece Price, Compute Masterwork Price, Compute Other Painting Price, Compute Future Trends

핵심 키워드 정리

클래스 다이어그램 속성 오퍼레이션 Generalization Aggregation Composition Association Multiplicity Dependency Constraint Interface Stereotype CRC 카드 텍스트 분석 Entity Class Boundary Class Control Class 명사 추출