인터페이스(interface)
정의
- 컴퓨터 과학 : 두 시스템 간 상호작용을 정의하는 경계
- 프로그래밍 : 객체 간의 상호작용을 정의하는 추상적인 계약
목적
- 구현을 숨기고 상호작용의 방식만 명시하여 느슨한 결합을 유지
- 다형성(polymorphism) 구현
주요 특징
- 인터페이스에 선언된 메서드는 구현 없이 형태만 정의
- 다중 상속 가능(자바 기준)
- 객체 간 의존도를 낮춰 확장성과 유지보수성 향상
public interface Animal {
void sound();
}
public class Dog implements Animal {
public void sound() {
System.out.println("Bark");
}
}
public class Cat implements Animal {
public void sound() {
System.out.println("Meow");
}
}
요구사항 도출
정의
- 시스템이 사용자 및 다른 시스템과 어떻게 상호작용할지에 대한 명확한 정의를 추출
목적
- 프로젝트 성공의 기반을 다지는 작업
- 고객의 기대와 요구를 반영
프로세스
- 이해 : 문제를 명확히 정의
- 수집 : 사용자의 요구와 기대를 문서화
- 정제 : 모호하거나 충돌하는 요구사항을 정리
- 우선순위 결정 : 필수 기능과 추가 기능 분리
- 검토 및 확인 : 이해관계자와 합의
산출물
- 기능 요구사항 : 시스템이 수행해야 할 기능
- 비기능 요구사항 : 성능, 보안, 확장성 등 품질 기준
객체지향 분석(Object-Oriented Analysis; OOA)
정의
- 객체지향 프로그래밍의 개념(클래스, 객체)을 사용해 시스템 요구사항을 분석하는 과정
목적
- 현실 세계의 문제를 객체로 추상화
- 재사용성 높은 설계 제공
주요 활동
- 객체 식별 : 시스템에서 중요한 객체를 식별
- 객체 관계 정의 : 객체 간의 관계와 상호작용 정의
- 객체 행동 정의 : 객체의 책임과 동작 정의
장점
- 자연스러운 문제 해결 방식(현실 세계와 유사)
- 코드 재사용성 및 확장성 증가
다이어그램
정의
- 시스템의 구조와 동작을 시각적으로 표현하는 도구
목적
- 복잡한 시스템을 이해하기 쉽게 설명
- 팀 간 의사소통 및 설계의 기준 제공
활용
- 다이어그램은 설계 및 구현의 기초 자료로 사용
- 팀 간 명확한 의사소통 지원
주요 UML 다이어그램
- 클래스 다이어그램
- 시스템의 구조와 클래스 간의 관계를 표현
- 속성, 메서드, 접근제어자 등 명시

- 시퀀스 다이어그램
- 객체 간의 상호작용과 메시지 교환을 시간 순서로 표현
- 예 : 사용자 -> 로그인화면 -> 인증 서버 -> 결과 반환

- 유스케이스 다이어그램
- 시스템의 기능과 액터(사용자)의 관계를 표현
- 예 : 사용자가 "로그인", "회원가입", "게시글 작성" 기능 사용

- 활동 다이어그램
- 시스템의 동작 흐름을 표현
- 예 : "회원가입" -> 입력 검증 -> 데이터 저장 -> 성공/실패 반환
