객체 지향 분석 및 설계(Object-Oriented Analysis and Design, OOAD)는 소프트웨어 공학에서 사용되는 기술적 접근 방식으로, 객체 지향 패러다임을 기반으로 시스템을 분석하고 설계하는 방법론이다. 이 방법론은 객체 지향 프로그래밍(OOP)의 원칙을 소프트웨어 개발 생명주기 전반에 걸쳐 적용하며, 특히 요구사항 분석(analysis)과 설계(design)의 초기 단계에 중점을 둔다.
구성 요소
OOAD는 크게 두 가지 하위 활동으로 구성된다.
-
객체 지향 분석(Object-Oriented Analysis, OOA): 시스템이 해결해야 할 문제 영역(problem domain)을 이해하고, 요구사항을 객체 중심으로 모델링하는 단계이다. '무엇(What)'을 할 것인지에 초점을 맞춘다. 주요 산출물로는 개념 모델(conceptual model), 유스 케이스(use case), 시스템 시퀀스 다이어그램(system sequence diagram) 등이 있다.
-
객체 지향 설계(Object-Oriented Design, OOD): 분석 단계에서 도출된 개념적 모델에 구현 제약 조건(하드웨어, 소프트웨어 플랫폼, 성능 요구사항, 데이터베이스 등)을 적용하여 실제 구현 가능한 솔루션을 설계하는 단계이다. '어떻게(How)' 구현할 것인지에 초점을 맞춘다. 주요 산출물로는 클래스 다이어그램(class diagram), 시퀀스 다이어그램(sequence diagram) 등이 있다.
특징 및 원칙
OOAD는 모듈성(modularity)과 재사용성(re-usability)을 강조하며, 개방-폐쇄 원칙(Open-Closed Principle)을 만족하는 것을 목표로 한다. 분석과 설계는 반복적이고 점진적인(iterative and incremental) 방식으로 수행되는 것이 일반적이며, 이는 Unified Process(UP)와 같은 방법론에서 체계화되었다. 주요 설계 원칙으로는 의존성 주입(Dependency Injection), 순환 의존성 방지 원칙(Acyclic Dependencies Principle), 합성 재사용 원칙(Composite Reuse Principle) 등이 있다.
표기법
OOAD에서는 주로 UML(Unified Modeling Language)을 사용하여 시스템을 시각적으로 모델링한다. 클래스 다이어그램, 시퀀스 다이어그램, 유스 케이스 다이어그램, 상태 다이어그램 등 다양한 UML 다이어그램이 분석 및 설계 과정에서 활용된다.
역사 및 배경
객체 지향 분석 및 설계의 개념은 1980년대 후반에서 1990년대에 걸쳐 Grady Booch, Ivar Jacobson, James Rumbaugh 등 여러 학자와 실무자들에 의해 발전되었다. 이들의 연구는 이후 UML의 표준화와 Rational Unified Process(RUP)로 이어졌다. 대표적인 저서로는 Grady Booch의 《Object-Oriented Analysis and Design with Applications》, Craig Larman의 《Applying UML and Patterns》 등이 있다.
활용
OOAD는 기업용 애플리케이션, 임베디드 시스템, 웹 애플리케이션 등 다양한 소프트웨어 개발 분야에서 활용된다. 객체 지향 언어(Java, C++, C#, Python 등)를 사용하는 프로젝트에서 널리 적용되며, 설계 패턴(Design Patterns)과 아키텍처 패턴(Architectural Patterns)의 적용과도 밀접한 관련이 있다.