1. OOAD(Object-Oriented Analysis and Design) 개요
• 객체지향 분석 및 설계는 소프트웨어를 객체 단위로 분석하고 설계하는 과정으로, 현실 세계의 개체(Entity)와 행위를 모델링하여 유지보수성과 확장성을 높인다.
1. OOA (Object-Oriented Analysis, 객체지향 분석)
개념
- 요구사항을 분석하여 객체 모델을 도출하는 과정
- 소프트웨어 개발의 초기 단계에서 문제 영역(Domain)을 분석하고, 사용자가 필요로 하는 기능과 객체 간의 관계를 정의한다.
- 비즈니스 로직과 사용자의 요구사항을 명확히 모델링하는 것이 핵심
주요 특징
- Use-Case 중심 분석
- 사용자의 요구사항을유스케이스 다이어그램으로 정리
- 액터(Actor)와 유스케이스(Use-Case) 간의 관계 정의
- 개념적 클래스 모델링
- 도메인 내에서 중요한 개체(Entity)와 속성(Attribute)을 식별
- 개체 간의 관계(연관, 상속, 집합, 복합 관계) 모델링
- 기능과 책임 정의
- 각 객체가 수행해야 할 기능(메서드)과 책임을 분리
- 객체 간의 협력(메시지 전달) 방식 설계
예제
- 요구사항: 사용자가 상품을 검색하고 장바구니에 추가한 후 결제하는 기능이 필요
- 유스케이스 분석
도출된 객체
객체 | 속성 | 메서드 |
User | 이름, 이메일, 패스워드 | 로그인(), 회원가입() |
Product | 상품명, 가격, 재고량 | 재고확인(), 상품정보조회() |
Cart | 상품목록, 총 가격 | 상품추가(), 상품삭제() |
Order | 주문번호, 주문일자, 결제상태 | 주문확정(), 결제처리() |
2. OOD (Object-Oriented Design, 객체지향 설계)
개념
- OOA에서 도출한 객체 모델을 기반으로 실제 소프트웨어의 설계 구조를 만드는 과정
- 소프트웨어의 내부 구조를 정의하고, 객체 간의 상호작용을 UML 다이어그램(클래스 다이어그램, 시퀀스 다이어그램 등)으로 표현
- 객체 간의 협력, 인터페이스 설계, 데이터 흐름을 구체적으로 설계
주요 특징
- 객체 간 관계 정의
- 상속, 다형성, 캡슐화를 적용하여 객체 간 협력 구조를 최적화
- 클래스 다이어그램을 통해 관계 정의
- 메서드 및 속성 구체화
- 객체의 속성과 메서드를 상세히 정의
- 연관된 객체 간의 데이터 흐름을 고려
- 객체 간 메시지 흐름 설계
- 시퀀스 다이어그램을 통해 객체 간 메시지 전달 방식을 정의
- 객체가 언제, 어떤 순서로 상호작용하는지 시각화
예제
- OOA에서 분석한 개념적 모델을 구체적인 UML 다이어그램으로 설계
- 클래스 다이어그램
- 시퀀스 다이어그램
OOA vs OOD 비교
구분 | OOA (객체지향 분석) | OOD (객체지향 설계) |
목적 | 문제 도메인을 분석하여 객체 모델 정의 | 소프트웨어 구현을 위한 설계 구조 구성 |
접근법 | 사용자의 요구사항 및 비즈니스 로직 중심 | 시스템 내부 구조와 객체 협력 중심 |
결과물 | 개념적 클래스 모델, 유스케이스 다이어그램 | 클래스 다이어그램, 시퀀스 다이어그램, 설계 문서 |
활용 다이어그램 | 유스케이스 다이어그램, 개념적 클래스 모델 | 클래스 다이어그램, 시퀀스 다이어그램, 상태 다이어그램 |
초점 | 어떤 객체가 필요한가? | 객체들이 어떻게 협력할 것인가? |
예제 | “사용자가 상품을 검색하고 주문한다” | “Product 클래스는 Order 클래스와 1:N 관계이며, getProductInfo() 메서드를 제공한다” |
• 대표적인 모델링 언어로 UML(Unified Modeling Language)을 사용하며, 주요 단계는 다음과 같다.
- 요구사항 분석: Use-Case 모델링
- 분석 모델링: 개념적 클래스 다이어그램
- 설계 모델링: 시퀀스 다이어그램, 클래스 다이어그램, 상태 다이어그램 등
- 구현: 설계된 구조를 코드로 변환
2. Use-Case 분석 (유스케이스 다이어그램)
개념
• 시스템의 기능을 사용자 관점에서 식별하고, 사용자가 시스템과 상호작용하는 방식을 모델링한다.
• 주요 구성 요소:
- Actor(행위자): 시스템과 상호작용하는 외부 요소(사용자, 다른 시스템)
- Use Case(유스케이스): 사용자의 목표를 충족하는 기능
- Relationships(관계): Actor와 Use Case 간의 연결
예제
• 온라인 쇼핑몰에서 상품을 검색하고 주문하는 기능을 분석한 유스케이스 다이어그램 예시
[사용자] --- (상품 검색)
[사용자] --- (상품 주문)
(상품 주문) ---|> (결제)
• 확장(Extend), 포함(Include) 관계를 활용하여 유스케이스 간의 연관성을 정의
3. 시퀀스 다이어그램 (Sequence Diagram)
개념
- 시스템 내부에서 객체 간의 메시지 흐름을 시간 순서에 따라 표현하는 다이어그램
- 객체 간의 메서드 호출(요청)과 반환 관계를 명확히 하여 동작을 시각화한다.
주요 구성 요소
- Actor(사용자): 시스템을 사용하는 주체
- Object(객체): 시스템 내에서 역할을 수행하는 개체
- Message(메시지): 객체 간의 호출 및 응답
- Lifeline(생명선): 객체가 활성화되는 시간
예제
- 사용자가 상품을 주문하는 시퀀스를 나타낸 다이어그램
[사용자] -> [상품관리]: 상품 검색()
[상품관리] -> [데이터베이스]: 검색 요청
[데이터베이스] -> [상품관리]: 검색 결과 반환
[상품관리] -> [사용자]: 결과 표시
[사용자] -> [주문관리]: 주문 요청()
[주문관리] -> [결제시스템]: 결제 처리()
- 객체 간 호출되는 순서와 관계를 명확히 분석 가능
4. 클래스 다이어그램 (Class Diagram)
개념
• 시스템 내 객체들의 속성(Attributes), 메서드(Operations), 관계를 정의하는 정적 구조 모델링
• 객체의 설계 구조 및 상속 관계를 시각적으로 표현하여 개발 시 참조 가능
주요 구성 요소
- Class(클래스): 속성과 메서드를 포함하는 개념적 개체
- Attributes(속성): 클래스가 가지는 데이터
- Operations(메서드): 클래스가 수행하는 동작
- Relationships(관계):
- 연관 관계 (Association): 객체 간의 일반적인 관계 (─)
- 상속 관계 (Inheritance): 객체가 다른 객체를 상속받는 관계 (▷)
- 집합 관계 (Aggregation): 부분-전체 관계 (◇)
- 복합 관계 (Composition): 더 강한 종속 관계 (◆)
예제
- 온라인 쇼핑몰의 클래스 다이어그램 예시
+----------------+
| 사용자(User) |
+----------------+
| -이름 |
| -이메일 |
+----------------+
| +로그인() |
| +회원가입() |
+----------------+
|
▼
+-----------------+ +------------------+
| 주문(Order) | 1 ───▶ | 상품(Product) |
+-----------------+ +------------------+
| -주문번호 | | -상품명 |
| -주문일자 | | -가격 |
+-----------------+ +------------------+
| +결제() | | +재고확인() |
+-----------------+ +------------------+
- User와 Order는 1:N 관계, Order와 Product는 1:N 관계
오늘의 배운 점 정리
- OOA(객체지향 분석) → 문제 도메인을 분석하고 객체를 정의하는 과정
- OOD(객체지향 설계) → OOA에서 도출한 객체를 기반으로 시스템 내부 구조를 설계하는 과정
- OOA가 요구사항 분석을 담당하고, OOD가 실제 개발을 위한 설계를 담당
- Use-Case 다이어그램을 통해 사용자 요구사항을 분석하고 시스템 기능을 정의한다.
- 시퀀스 다이어그램으로 객체 간의 동적 메시지 흐름을 표현하여 시스템 동작을 이해한다.
- 클래스 다이어그램을 활용하여 시스템의 정적 구조를 모델링하고 객체 관계를 설계한다.
- UML 다이어그램을 활용하면 객체지향적인 소프트웨어 개발이 더욱 명확하고 체계적으로 진행될 수 있다.
'CS 공부' 카테고리의 다른 글
CS) CASE, 럼바우 기법, 요구사항 모델링 (0) | 2025.02.21 |
---|---|
CS) 객체지향 설계 원칙과 OOAD (0) | 2025.02.20 |
CS) 응집도 ( Cohesion ) (0) | 2025.02.18 |
CS) 데이터베이스 관계대수, 관계 함수, 정규화 (0) | 2025.02.16 |
CS) 정처기 대비 요약 정리 (0) | 2025.02.15 |