객체지향방법론: 현실 모델을 소프트웨어 구조로 옮기는 방식

객체지향방법론의 객체 모델링 방식과 재사용성, 개발 절차, OOSE·OOD·OMT의 접근 차이를 정리한다.

2026-08-14 · 최초 발행 2026-04-17

객체를 중심으로 시스템을 모델링하는 이유

객체지향방법론(Object-Oriented Methodology)은 현실 세계의 복잡한 대상과 동작을 객체(Object)의 집합으로 표현하는 소프트웨어 개발 방식이다. 객체는 데이터와 그 데이터를 조작하는 함수를 함께 가지며, 시스템은 객체 사이의 메시지 교환으로 기능을 수행한다.

구조적 방법론이 프로세스 중심의 하향식(Top-down) 접근에 가까웠다면, 객체지향방법론은 데이터와 행위를 결합한 객체를 기반으로 상향식(Bottom-up) 또는 통합적인 관점에서 설계한다. 구성 요소를 독립적인 객체로 다루기 때문에 변경이 발생해도 영향을 분리하고 대응할 수 있다.

현실의 업무 모델과 코드가 이어지는 지점

현실의 사물과 비즈니스 로직을 소프트웨어 객체에 직접 대응시키면, 분석 단계의 요구사항이 설계와 구현으로 전달되는 과정에서 왜곡이 줄어든다. 사용자의 업무 요건을 시스템 구조에 자연스럽게 반영할 수 있어 개발자와 사용자 사이의 의사소통 간극도 작아진다.

캡슐화(Encapsulation)와 상속(Inheritance)은 이미 검증된 코드를 재사용하는 기반이 된다. 기존 클래스의 기능을 상속으로 확장하고, 다형성(Polymorphism)으로 동일한 인터페이스에 서로 다른 동작을 구현하면 중복 코드를 줄이고 개발 생산성을 높일 수 있다.

재사용 가능한 컴포넌트 라이브러리와 프레임워크는 신규 기능 개발 시간을 단축한다. 요구사항 변화에 맞춰 수정과 배포를 반복해야 하는 환경에서 이러한 재사용성은 시장 출시 속도(Time to Market)를 높이는 요소가 된다.

객체지향 분석(OOA)과 설계(OOD)에서 만든 모델은 객체지향 프로그래밍(OOP) 언어의 코드와 직접 연결된다. 설계와 구현 사이의 일관성이 높아지면 개발 과정의 오류를 줄일 수 있고, 유지보수 시 코드에서 원래 설계 의도를 추적하기도 쉬워진다.

분석부터 운영까지 이어지는 객체 모델

객체지향방법론은 분석, 설계, 구현, 배포 전반에서 객체라는 공통 모델을 유지한다.

분석/설계 상세OOA (분석)OOD (설계)업무요건 정의객체지향 분석/설계객체지향 구현/테스트배포 유지보수

업무요건 정의 단계에서는 사용자의 비즈니스 요구사항을 수집하고, 유스케이스(Usecase)로 시스템이 제공해야 할 기능을 식별한다. 이어 객체지향 분석과 설계 과정에서 시스템의 객체를 찾아내고 클래스 간 관계, 동적 상속 구조, 아키텍처와 상세 설계를 정한다.

구현과 테스트에서는 Java, C++, Python 등의 객체지향 언어로 코드를 작성한다. 객체 단위의 단위 테스트와 연동 테스트로 품질을 검증한 뒤, 완성된 시스템을 운영 환경에 배포하고 지속적인 업데이트를 수행한다.

UML 표준화 이전의 객체지향 접근

통합 모델링 언어인 UML(Unified Modeling Language)이 표준화되기 전에는 서로 다른 초점을 가진 객체지향방법론이 사용됐다.

유스케이스에서 출발한 OOSE

이바 야콥슨(Ivar Jacobson)이 제안한 OOSE(Object-Oriented Software Engineering)는 유스케이스(Usecase) 중심의 접근을 취한다. 사용자의 요구사항을 기능 관점의 시나리오로 정의하고, 이를 바탕으로 개발 과정을 이끈다. 이 접근은 현대 소프트웨어 공학의 요구사항 관리 기법에 영향을 주었다.

설계 모델을 강조한 Booch의 OOD

그래디 부치(Grady Booch)의 OOD(Object Oriented Design)는 설계 문서화와 논리적·물리적 모델링을 강조한다. 디자인 패턴의 초기 개념이 녹아 있으며, 클래스 다이어그램과 객체 다이어그램을 상세히 정의해 설계의 견고함을 추구한다. 성격상 설계 단계에 집중된 방법론이다.

여러 모델 관점을 함께 다룬 OMT

제임스 럼바우(James Rumbaugh)가 제안한 OMT(Object Modeling Technology)는 시스템을 객체 모델링, 동적 모델링, 기능 모델링의 관점에서 분석한다.

  • 객체 모델링(Object Modeling)은 시스템의 정적 구조를 정의하며 정보 모델링이라고도 한다.
  • 동적 모델링(Dynamic Modeling)은 시간 흐름에 따른 객체 간 상태 변화를 기술한다.
  • 제어 모델링(Functional/Control Modeling)은 프로세스 관점에서 데이터 흐름과 처리 로직을 설명한다.

유지보수 가능한 구조를 위한 관점

객체지향방법론은 데이터와 로직을 분리하던 방식에서 벗어나, 현실의 존재를 소프트웨어 안의 자율적인 개체로 투영한다. 이를 통해 시스템 복잡도를 관리 가능한 수준으로 다룰 수 있다.

초기 학습 곡선이 높고 설계 단계에 많은 시간이 들어갈 수 있다는 특성은 있다. 다만 장기적인 유지보수 비용 절감과 시스템 안정성 측면에서 가치를 가진다. Jacobson의 유스케이스 접근, Booch의 설계 문서화, Rumbaugh의 다각도 모델링은 오늘날 객체지향 개발 체계의 기반이 되었으며, 클라우드 네이티브와 마이크로서비스 아키텍처(MSA)에서도 재사용성과 일관된 모델링이라는 원리는 유효하다.

Sources

객체지향방법론객체지향설계소프트웨어공학UML재사용성