본문 바로가기

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

객체지향의 탄생-객체지향, 삽질을 줄이는 지혜

 

객체지향은

 

'세상의 사물을 관찰하여 사물의 본질을 속성과 메소드를 포함한 객체와, 객체간의 관계로 추상화 한다.'

 

'그래서 응집도를 높게하고 결합도는 낮게 개발한다.'

 

'그 결과 유연하고 확장하기 쉽고 유지보수가 편리하는 소프트웨어를 개발하는 방법'

 

이 객체지향 개발이고 객체지향 개발에 따른 효과이다.

 

나아가,

 

'객체와 객체간의 관계에서 반복적으로 발견되는 좋은 원칙을 이끌어 내어 패턴으로 만들어낸 '

 

다자인 패턴이다.

 

 

삽질은 프로젝트 할때의 삽질이다. 프로젝트 삽질의 최후는, 동작은 하나 안은 만신창이 누더기인 결과물이 탄생한다. 살아는 있으나 신체와 정신이 만신창이가 된 개발자가 생긴다.

 

그래도 치명적인 문제는 일단 숨겨져 있고 결과물은 돌아간다.

 

개발자는 고된 일터 탈출을 꿈꾸더라도 밥벌이 때문에 다음 프로젝트를 찾는다. 삽질은 반복된다. 만약 공장의 노동자처럼 시간제로 학생들을 가르키는 강사/교사처럼 시간별로 일하는 대비 얻는 생산성이 분명하다면 관리자도 삽질을 유도하진 않고 제대로 범위, 시간, 원가의 비용을 합리적으로 산정할 것이다.

 

그러나 소프트웨어 개발은 비용을 제대로 산출할 수 없다. 마치 물이었던 액체가 가습기를 거쳐 수증기로 증발하는 것처럼 관리자의 손에서 증발해 버리는 무언가와 같다.

 

관리자가 비용을 가늠할수 없기 때문에 비용을 압축하고 비용을 압축하면 개발자는 눈에 보이는 결과물에 허우적 된다.

 

그 결과 버그는 증가하고 내부 품질이 저하된다. 응집도는 낮아지고 결합도는 높아진다. 일정 압축의 대응은 대부분 개발자가 온몸으로 떠 안는다. 개발자는 야근하게 되고 좀더 잘할수 있음에도 일정 비용 때문에 자신의 코드 품질을 희생했기 때문에 코드에 대한 자신감, 자존심도 줄어든다. 버그는 증가한다. 삽질이 시작된다.

 

삽질을 줄인다는 말은 삽질로 얻는 피해를 줄인다는 말이다. 삽질로 생긴 결과물의 피해를 최소화 하고 개발자가 코드속을 탐색하며 추가 개발할때의 힘든점을 최소화 하겠다는 것이다.

 

객체지향은 개발할때의 가장 근본이 되는 코드를 간결하고 유연하고 확장하기 쉽게 개선해 주기 때문에 삽질을 줄인다는 표현이 맞다. 그러나 역으로 말하면 줄인다/최소화 할수는 있지만 근본적인 해결책은 되지 못한다는 말과 같다. 관리자가 합리적인 범위, 시간, 원가의 비용을 투자해야 한다.

 

그래서 삽질을 없애는, 피하는 이런 완벽한 표현을 쓰지 못했다. 객체지향은 '만병통치약'이 아니고 '은총알'도 아니다.

 

지혜는 조금 더 고차원적인 인간의 사고 능력이다. 객체지향은 방법론이고 기술 일수도 있고 기법일수도 있고 지식일수도 있다. 객체지향은 단순히 지식 보다는 지혜에 가깝다.

 

단순한 암기 지식이 아니라 관찰, 추상화등의 고차원적인 인간의 사고 능력이 필요하기 때문이다. 소프트웨어 개발의 천재들이 유연하고 확장하기 쉽게 개발하는 기법들을 모아 교훈, 선례지식으로 정리 했기 때문이다.

 

지혜란 국어사전에서 사물의 이치를 빨리 깨닫고 사물을 정확하게 처리하는 정신적 능력이라고 정의한다. 객체지향도 사물의 이치를 잘 깨닫아 객체와 객체와의 관계로 잘 정리하고 처리할줄 알아야 한다.

 

객체지향은 지혜에 가깝다. 그래서 나는 책 제목을 객체지향의 탄생, 삽질을 줄이는 지혜로 정했다.

 

객체지향은 삽질을 줄이는 지혜이다.

 

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