본문 바로가기

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

객체지향의 탄생-객체지향적인 개발 단계

 

  1. 기타 객체지향 이야기거리
    1. 객체지향적인 개발 단계

옛날 간단한 사다리 게임 짜면서 취미생활 삼아 프로그램을 짜곤 했다. 그때는 단순히 언어 문법에 대한 지식과 로직 구현 능력만 있으면 프로그램을 구현할 수 있다고 생각했다. 그래서 프로그래머를 하면, 내가 하고 재미있어 하는 일 편하게 하면서 일하겠구나 라고 생각하곤 했다.

 

하지만 막상 프로그래머가 되어 보니, 프로그램 짜는 일은, 하나의 프로젝트는, 인류 문명의 갖가지 요소를 적용하여 뭉친 복잡한 실타래와 같았다. 고도의 업무분석 능력, 커뮤니케이션 능력, 일정 관리 능력, 인력 관리 능력이 요구되었다. 어느 고참 개발자의 얘기를 들어보면 고급 관리자가 되면 정치싸움에도 능숙해야 한다고 했다. 나도 프로젝트를 경험해보니 실제 프로그램 구현 능력도 중요했지만, 업무담당자와의 커뮤니케이션 능력이 더욱 더 절실히 필요하곤 했다.

 

프로그램 짜는 일이 프로젝트 단위로 커지면, 관리할 영역이 커지기 때문에 다양한 프로젝트 운영 방법론이 발달하였고, 프로젝트 담당자는 이 운영 방법론 중에 하나를 선택해야 한다.

 

만약 이 책에서 프로젝트 운영 방법론까지 다룬다면 하나의 책은 하나의 주제만 온전히 다뤄야 한다는 객체지향적인 원칙에 어긋나므로 자세한 운영 방법론은 설명은 하지 않는다. 다만 일반적인 객체지향 어플리케이션 구현시 다음과 같은 개발단계를 거치면 점진적이며 깔끔하게 객체지향 개발을 할 수 있다.

 

1. 고객이 원하는 기능을 하도록 프로그램을 구현한다.

첫번째 단계는 고객의 가치를 최우선으로 생각한 프로그램이 잘 만든 프로그램이라는 가장 중요한 가치를 강조한다. 이 단계에서는 내부의 설계보다는 고객에게 제공해야하는 기능을 정확하고 버그없이 구현할 수있도록 집중한다. 아무리 프로그램을 유연하고 깔끔하게 구현했다 하더라도 고객이 원하는 기능을 구현하지 못했으면 아무 소용 없다는 것을 명심한다. 무엇보다 고객이 원하는 기능을 하도록 프로그램을 구현한다.

 

2. 객체지향의 기본 원리를 적용해서 프로그램을 유연하게 개선한다.

객체지향의 캡슐화와 정보은닉, 상속과 폴리모피즘, 상속과 구성등을 사용하면 중복된 코드가 적고, 각 객체가 자신의 행동을 통제한다. 객체지향적으로 작성한 프로그램이란 뜻은 프로그램이 견고하고 유연해서 확장하기 쉽다는 것이다. 객체지향의 기본 원리를 적용해서 기능은 그대로인 상태에서 내부 프로그램을 유연하게 개선한다.

 

3. 유지보수와 재사용이 쉬운 디자인을 위해 좀더 소프트웨어를 개선한다.

이 단계는 좀더 다양한 객체지향 디자인 원칙과 디자인패턴을 사용한다. 바뀌는 것은 캡슐화한다. 상속보다는 구성을 사용한다. 서로 상호작용하는 객체사이에는 가능한한 느슨하게 연결한다 등의 디자인 원칙을 사용하여 프로그램을 개선하면 유지보수와 재사용이 쉬운 프로그램으로 거듭날 것이다.

 

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