NEW 기획 디자인 개발 프로덕트 아웃소싱 프리랜싱

기획

절차지향 분석 VS 객체지향 분석, 차이점은?

개발자들은 프로젝트를 진행할 때, 여러 가지 분석을 하게 됩니다. 그중에는 절차지향 분석과 객체지향 분석이라는 두 가지 방식이 있습니다. 이번 시간에는 이 두 가지 분석방식이 무엇이고, 또 어떻게 사용되는지 알아보도록 하겠습니다. 

 

 

절차지향 분석이란?

절차지향(flow) 분석은 서비스에서 일어나는 사건과 순서에 따라 분석을 진행하는 방식입니다. 아무리 복잡한 프로그램이라 해도 핵심적인 사건이나, 중요한 사건을 위주로 설명을 하기 때문에 전체 서비스의 큰 흐름을 한눈에 볼 수 있다는 장점이 있습니다. 

 

온라인 커머스 서비스를 예로 들어볼까요? 커머스 서비스에는 들어있는 내용이 굉장히 많습니다. 그렇기에 분석을 할 때에도, 사용자가 바라보는 부분 외에도 다양한 지점을 확인해야 합니다. 절차지향 분석은 이렇게 복잡한 서비스를 단순하게 정리하여, 무엇이 어떤 과정을 통해 최종적인 결과를 만들어내는지 전체적인 과정을 한 번에 보여줍니다. 

 

위의 그림은 온라인 쇼핑몰에서 상품을 주문하고, 배달하기까지의 과정을 한눈에 보여주고 있습니다. 

 

  1. 구매자는 주문을 하고, 이메일로 확정 메일을 받고 최종적으로 물건을 받습니다.
  2. 주문 시스템은 인증을 거쳐, 주문 건을 창고로 전송하고 주문에 대한 정보를 저장합니다.
  3. 추가 시스템은 위조, 변조를 체크하고 물건 배송 요청을 받아, 물건을 포장 후 사용자에게 보냅니다. 

 

절차지향 분석은 서비스에 들어가는 중요한 지점을 압축해 그 안에서 벌어지는 사건이나, 역할 등을 확인하기 좋습니다. 하지만 이 방식은 어디까지나 큰 그림을 그리는 방식일 뿐, 실제 개발을 진행하려면 더욱 자세한 정보를 알아야합니다. 그래서 필요한 것이 바로 객체지향 분석법입니다.

 

 

객체지향 분석이란?

절차지향 분석이 사건의 흐름, 단계를 나타냈다면 객체지향(object)은 실제 서비스에서 다루는 정보 단위를 중심으로 분석을 합니다. 

 

하나의 서비스에는 수많은 정보를 담고 있는 박스들이 있습니다. 이 박스들이 실제로 어떤 데이터를 담고 있는지, 그리고 각각의 박스들이 어떤 식으로 연결되어야 하는지, 개발자들은 이런 지점을 분석해 어떤 정보가 필요하고, 그 정보를 어떻게 확보할 것인지를 고민하게 됩니다. 또한 어떤 정보가 더 우선권을 가지는지, 어떤 정보가 더 자주 사용되는지 다양한 지점을 분석해 구조를 설계합니다. 

 

위 그림은 커머스 서비스의 기능들을 큰 박스로 나누어 정리한 그림입니다. 고객이 웹으로 접속을 해서 상품을 주문하고, 그 상품이 무슨 정보들의 조합으로 이뤄져 있는지를 보여주는 그림이죠. 하지만 이런 정보는 전체 서비스들 중 일부분에 불과합니다. 

 

  • 상품을 구매하는 구매자
  • 상품을 등록하는 판매자
  • 상품을 배송하는 물품창고
  • 주문을 관리하는 주문관리 센터
  • 사이트에 상품을 노출하는 마케터 등

 

커머스 서비스만 하더라도 수많은 사람의 역할이 있고, 그들이 진행하는 일에 따라 서비스 상태도 계속 변하게 됩니다. 그러니 그 상황을 그려내는 구조나 설계 역시 복잡해질 수밖에 없죠. 그래서 객체지향 분석은 더 많은 정보를 따로따로 나누어 분석하게 되며, 절차지향 분석에서 다뤘던 커다란 사건이나 역할 등을 더 잘게 쪼개어 자세한 정보들을 분석하는 과정을 거칩니다.

 

이 과정에서 데이터를 주고받는 방식, 명칭, ID 같은 것들을 자세하게 적어 넣게 되고, 이 설계도를 기반으로 개발자들은 실제 서비스를 개발합니다. 또한 서비스 규모가 크고, 복잡한 서비스일수록 분석에도 더 많은 시간이 걸리는 것이죠.

 

 

절차지향 VS 객체지향?

일반적으로 절차지향과 객체지향 분석은 서로 반대되는 개념처럼 알려져 있습니다. 하지만 개발자의 입장에서는 이 두 가지 모두 꼭 필요한 분석 방식입니다. 이처럼 오해가 생기게 된 이유는, 프로그래밍 언어에 절차지향/객체지향 개발언어가 따로 나뉘어 있기 때문일 겁니다.

 

절차지향 프로그래밍 (PP: Procedural Programming)은 실제로 실행되는 내용이 무엇인가에 더 초점을 맞추고 있습니다. 그래서 그 안에서 오고 가는 데이터를 다시 사용하거나, 빼서 다른 곳에 다시 끼워 넣는 방식을 사용하기보다는 처음부터 끝까지 실행되는 결과물을 중요하게 생각하는 방식입니다.

 

반면 객체지향 프로그래밍(OOP: Object Oriented Programming)은 실제로 일어나는 과정보다 데이터가 어떻게 묶여 있는지, 어떻게 하면 중복되는 정보 없이 더 가벼운 프로그램을 만들 수 있는지를 중요하게 보는 개발 방식입니다. 그래서 과거의 개발 언어들보다 내용을 잘게 쪼개고 묶어 두는 ‘캡슐화’ 개념이 들어가 있죠.

 

현실에서 자동차 엔진을 만든다고 한다면 어쩔 수 없이 똑같은 부품이 여러 개 등장하게 됩니다. 절차지향 프로그래밍(PP) 방식에서는 이렇게 겹치는 부품들이 있더라도 최고의 엔진을 만들어내면 된다고 이야기합니다. 그래서 각 파츠마다 똑같은 부품들을 다시 만들어내게 되죠.

 

반면 객체지향 프로그래밍(OOP) 방식에서는 이 똑같은 부품들을 최대한 줄이고, 재사용하게 됩니다. 심지어 더 작은 부품들의 조합을 통해, 더 큰 부품을 만들기도 합니다. 그래서 더 가볍고, 복잡한 구조를 갖게 되는 것이 객체지향 방식입니다.

 

이런 개발 언어의 특성 때문에 절차지향, 객체지향이란 말이 서로 반대되는 개념처럼 쓰이고 있을 뿐, 서비스를 분석, 설계할 때는 이 두 가지 방법이 모두 필요하다는 사실을 잊지 마세요!

 

지금까지 알아본 내용을 정리하면 다음과 같습니다.

 

  • 절차지향 분석은 서비스를 큰 틀에서 어떤 과정을 통해 서비스가 운영되는지 분석한다
  • 절차지향 분석은 더 큰 규모를 단순하게 정리하고, 단순화해 보여주는 역할을 한다.
  • 객체지향 분석은 서비스를 박스와 그 안의 데이터들의 연결관계를 통해 분석한다.
  • 객체지향 분석은 서비스 안의 데이터들을 더 자세하게 분석하는 역할을 한다.
  • 절차지향과 객체지향 분석은 서로 반대되는 개념이 아니다. 두 가지 모두 개발을 위해서는 꼭 필요한 방식이다.

 

이번 시간에는 절차지향 분석과 객체지향 분석에 대해 알아보았습니다. 좀 더 자세한 내용이 궁금하시다면, 다음 참고자료를 확인해보세요.

 

<참고자료>

https://m.blog.naver.com/atalanta16/220249264429

댓글 0

리플러스

웹개발과 UI를 연구하는 리플러스입니다. 현재 UD LAB이라는 채널을 운영하고있고, 디자이너를 위한 개발 공부법을 만들고 있습니다.

같은 분야를 다룬 글들을 권해드려요.

요즘 인기있는 이야기들을 권해드려요.

일주일에 한 번!
전문가들의 IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.

일주일에 한 번! 전문가들의 요즘IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.