본문 바로가기

기타/객체지향의 탄생(2013)

객체지향의 탄생- 객체와 컴포넌트, 아키첵처와 아키텍트

 

  1. 객체와 컴포넌트

객체란 실체로 존재하는 대상/개념이며 고유명사이다. 객체는 세상에 유일하게 존재하는 모든 것들~이라고 정의했다. 나는 객체만 알면 되는 줄 알았다. 그런데 컴포넌트란 용어와 기술에 대해서도 알아야 했다.

 

'CBD(컴포넌트 기반 개발) 개발 방법론'을 공부할때 나는 컴포넌트와 객체의 차이에 대해 햇갈렸다. 객체와 컴포넌트에는 비슷한 개념이 들어있다. 오히려 객체와 컴포넌트에 비슷한 개념이 녹아서 햇갈려 했던 것 같다.

 

하지만 이 둘의 차이점도 명확하다. 컴포넌트의 정의는 독립적으로 배포되는 단위로 조립/교환이 가능한 응집도가 높은 소프트웨어 산출물이라고 한다. 컴포넌트는 좀 더 명확한 물리적인 결과물이다.

 

컴포넌트가 사람이 눈으로 확인할 수 있는 결과물이라면 객체는 사람이 눈으로 확인할 수 없는 작은 단위의 사물과 같다. 마치 사람의 세포나, 요리안의 영양소와 비슷하다. 객체도 독립적으로 작동할 수 있지만 보통 다른 객체와 관계를 맺어 결과물을 제출한다. 다른 객체와 관계를 맺어 하나의 모듈이 되었으면 이 모듈이 곧 컴포넌트가 되기도 한다. 객체는 컴포넌트보다는 작은 단위의 기능을 수행한다. 컴포넌트는 독립적으로 작동하는 큰 단위의 모듈이다.

 

[객체가 모여 컴포넌트가 된다. 컴포넌트는 사람이 직접적, 물질적으로 인식할 수 있는 대상이다.]

 

  1. 아키텍처와 아키텍트

아키텍처란 단어는 산처럼 웅장하게 느껴지지만, 산속의 구름처럼 애매모호하다. 다른 객체지향 관련 용어처럼 어려운 용어로 우리를 불편하게 한다.

 

아키텍처의 시야는 '신'과 같다는 단서로부터 출발한다. 신은 위에서 아래를 내려다 보며 사람과 사물을 관찰한다. 그럴듯한 용어로 Top-down view 라고 부른다. 아키텍처는 신이 사람사는 세상을 정밀하게 관찰한 결과물과 비슷하다.

 

아키텍처는Top-down view 관점에서 시스템의 구성 요소와 구성 요소들 사이의 연결관계를 분석한 기술적인 명세서이며 공학적인 청사진이다. 나는 나중에 내가 만들 아키텍처를 훌륭하게 만들기 위해 신의 눈을 갖기를 바랐다.

 

 

아키텍트란 단어는 고도의 전문가라는 이미지를 풍기지만, 이름만 화려하지 않을까라는 느낌도 준적이 있다. 이름이 그럴듯 할수록 실제 하는일은 영양가 없는 직업과 기술이 너무 많음을 지켜 보았기 때문이다.

 

그래도 아키텍트는 편견의 시간을 넘어 점점 자리를 잡아가는 것 같다. 아키텍트는 프로젝트의 기술적인 부분에 대하여 의사결정을 진행하거나, 기술적인 이슈를 해결하는 전문가이다.

 

프로젝트의 시간, 인력, 업무 분석등의 전체 공정을 관리하는 PM은 꼭 필요하다. 그러나 해당 업무에 가장 알맞는 서버, 언어 플랫폼, 프레임워크를 결정하고 기술적인 이슈를 해결하는 아키텍트의 업무는 PM이나 개발자 누군가 주먹구구식으로 해결하곤 했다.

 

그 결과는 스파게티처럼 꼬인 코드, 한번 코드 수정할때마다 복잡한 리얼 적용 프로세스 등으로 개발자의 사기와 프로젝트의 생산성을 크게 떨어트렸다. 그래도 결국 프로젝트는 완성되겠지만 역시 월화수목금금금의 고되고 빨리 탈출하고 싶은 프로젝트로 평생 기억할 것이다.     

 

아키텍트란 단어가 익숙해지고, 아키텍트의 활약이 많아질수록 우리의 프로젝트 문화가 한단계 높아질 것이라 기대한다. 아키텍트는 관리자 관점이 아니라 기술자 관점에서 프로젝트를 진두지휘하는 내가 꿈꾸는 전문가이다.

 

[프로젝트 구성원들의 역할]

 

덧 ) 이 객체지향의 탄생 원고는 제가 책으로 내려다가 일단 잘 안되었는데요. 이유는 비문이 많다. 단락내 주제가 중복된다. 어떤 상황 설명을 과장한다.등 입니다. 그래도 원고를 일단 블로그에 몽땅 풀어보고 언젠가 제대로 교정해서 다시 도전할 생각입니다. 이점을 감안해서 읽고 객체지향을 이해하는데 도움이 되셨으면 좋겠습니다. 의견도 주셨으면 좋겠습니다. 원고 조금만 교정하면 괜찮을것 같은 출판사 관계자분의 피드백도 환영합니다. 매주 월요일 발행 예정입니다.