Devxplorer – 세상을 분석하는 개발자의 탐험기

IT, 경제, 인물, 건강 – All Explored

Devxplorere 자세히보기

IT (IT)🤖🧠/Object Oriented Programming

OOAD : Object Oriented Analysis and Design

데브엑스플로러 2024. 3. 11. 22:46
728x90
반응형

Object Oriented Analysis and Design 는 OOAD라고 하며, Object Oriented Analysis(OOA)와 Object Oriented Design(OOD) 과정을 통해 Software를 설계하는 Process 이다. 객체지향 분석 및 설계를 나타내는 약어로, 소프트웨어 시스템을 개발하기 위한 객체 지향 프로그래밍의 한 가지 방법론이다. 객체 지향 프로그래밍은 소프트웨어 개발을 보다 유지보수가 쉽도록 재사용 가능한 구성 요소로 만드는 방법을 제공한다. OOAD는 이러한 개념을 소프트웨어 시스템에 적용하여 설계하는 방법론을 제공한다.

OOA + OOD = OOAD

Object Oriented Analysis(OOA)

요구 사항을 분석하고, 요구 사항을 달성할 Object를 모델링하고, Object 간의 대략적인 관계를 그려 Domain Model을 작성한다.

요구 사항 분석 : 시스템을 개발하기 위해 사용자 및 이해 관계자와의 협력을 통해 요구 사항을 수집 및 문서화 한다. 요구 사항은 use-case diagram, system sequece diagram등의 모델로 표현될 수 있다.

Domain Model : 요구 사항 분석을 통해 소프트웨어 시스템을 모델링 한다. 추상적으로 표현한다. 도메인 모델을 통해 요구 사항 들을 달성할 추상적인 모듈들을 정의하고, 시스템의 구조와 동작을 설계하는데 사용한다. 이해 관계자와 개발자 간의 의사 소통을 용이하게 한다. 클래스 다이어그램과 다르게, 정확한 표기법이 중요하지 않다. 주요 목적은 개발자 간의 의사소통이다. 일반적으로 UML 다이어그램을 사용하여 시각적으로 표현하지만, 구체적이지 않다. 이를 통해 Class Diagram을 유도할 수 있다.

Object Oriented Design(OOD)

요구 사항을 달성하기 위해, Object들 간의 Interaction Diagram을 작성해 보고, Object의 구체적인 Attribute와 Operation을 정의하여 Class를 정의한다. Class 간의 관계를 Class Diagram으로 표현한다. 요구 사항들을 달성하기 위해 다양한 방법으로 Object간 동적 관계를 표현한다.

Interaction Diagram : 시스템 내에서 객체 간 상호 작용을 시각적으로 나타내는 다이어그램이다. Interaction Diagram은 주로 UML에서 사용되며, 시스템의 동작을 이해하고 설명하는데 도움을 준다. 보통 Sequence Diagram을 통해 시간의 흐름에 따라 객체 간의 상호작용을 표현한다. 객체 간의 메시지 전달 및 호출 순서를 보여준다. 시퀀스 다이어그램은 다음과 같은 주요 요소로 구성된다.

  • 객체 : 시스템 내에서 실제화된 객체로 다이어그램 상에 수직 선으로 표기 된다.
  • 메시지 : 메시지는 객체 간의 상호작용을 나타내며, 객체 간의 통신을 시간 순서대로 보여준다. 메시지는 화살표로 표시되며, 메시지의 유형에 따라 호출 메시지 반환 메시지 등으로 나뉜다.

시스템의 동작을 분석하고 설계하는데 사용하며, 객체 간의 통신 및 메시지 전달 패턴을 시각화하여 이해 관계자와 개발 간의 의사소통을 향상 시킨다. 이를 통해 Class가 가져야 하는 행위 들을 정의할 수 있다.

Class Diagram : 시스템의 구조를 나타내는 UML 다이어그램이다. 객체가 어떤 Attribute를 가질지, 어떤 Behavior를 가질지 표현할 수 있다. 또한 클래스와 클래스 간의 관계를 시각적으로 표현하여 시스템의 구조를 명확하게 이해하고 설계 할 수 있도록 돕는다. 클래스는 객체 지향 프로그래밍에서 기본적인 구성 요소로, 어떤 객체의 특징과 행위를 정의하는 템플릿이다.

  • Attribute : 클래스 내에서 변수이다. 클래스의 데이터 유형과 변수 이름으로 표현된다.
  • Methods : 클래스 내에서 메서드는 클래스가 수행할 수 있는 동작을 정의하며, 다이어그램에서 메서드는 클래스 이름 아래에 메서드 이름과 매개변수 목록, 반환 유형으로 표시된다.
  • Relations : 클래스 간의 상속, 연관, 의존, 포함, 집합의 관계를 표현한다. 이를 통해 OO Principle를 적용하여 유지보수하기 쉬운 구조로 클래스를 정의한다.

 

OOA단계는 컨셉을 보는 Sketch 하는 과정인 반면, OOD단계 에서는 요구사항을 달성하기 위한 Software를 정확하게 그려내야 한다.

UML을 통해 각각의 단계에서 필요한 View를 선택하여 보여준다. Use Case를 표현하기 위해 Use Case Diagram을 사용하고, Domain Model을 그리기 위해 Class Diagram을 사용한다. UML은 Software의 설계를 표준화 된 방법으로 설명하기 위한 도구이다. 표준화 된 표현 방법이기 때문에, 잘 알고 사용하면 개발자 간 효율성 있게 일 할 수 있다.

OOAD in UP Artifacts

WaterFall 개발 방법론은 요구사항이 자주 변경되는 시스템에서 채택하지 적합하지 않는 방법론이다. 고객의 요구사항을 바로 반영할 수 있도록 Agile하게 Iteration 통해 반영하는 방법론이 UP 이다.

Use Case Diagram을 통해 시스템에 대한 Actor의 요구 사항을 작성하고 이를 Use Case Text로 표현한 후, System Sequnce Diagram을 통해 System 단위의 Operation을 작성하여 요구사항에 대해 이해한다. 이를 달성하기 위한 Object들을 컨셉적으로 잡아보고 이들의 관계를 연결하여 Domain Model을 그린다.

개념적인 Domain Model을 통해 Object들을 선정하여 Object간 Interaction을 표현하여 Sequence Diagram을 작성해본다. 이후, 객체와 Operation을 통해 Class로 구체화 시킨 후, Class Diagram을 작성해 본다.

위 과정을 통해서 기능 요구 사항을 어떤 Object간의 Interaction을 통해 달성할 것인지 살펴볼 수 있다. 그러나 품질 속성의 경우, OOAD 과정을 통해 설계하는 것이 적합하지 않다. 품질 속성의 맞는 Tactic들을 선정하여 풀어야 한다. 설계자가 얼마나 많은 Tactic 들을 알고 있는지가 중요하다.

반응형