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

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

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

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

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

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


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

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


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

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



덧) 아직 고쳐쓰기가 덜 되었습니다. 예를 들면 도입부는 그럴듯하게 쓰다가 실제 설명부분에서는 풀어쓰는 부분이 덜 되었습니다. 어려운 용어의 풀어쓰기가 안되었습니다. 기타 삽화가 부족함을 이해해 주시길 바라며, 향후 책에 쓰일 원천 자료이기 때문에 펌은 불허, 링크 환영 합니다. 조언 부탁드립니다. ^ ^;

저작자 표시
신고
Posted by 산골
산골 블로그 소개 저는 하얀머리 개발자와 작가를 꿈꾸는 블로거 산골 입니다. 프로그램 개발자로서 저의 관심사는 개발자의 숨통을 트여준 아이폰 개발, 철학과 같은 깊이가 있는 객체지향 방법론입니다. 글쓰기와 수영을 좋아합니다. 블로그를 통해 관심사를 공유합니다. 제 블로그에 관심 있으시면 아래 RSS나 즐겨찾기로 편하게 구독하세요.

rss Bookmark and Share

댓글을 달아 주세요

  1. BlogIcon 가이세르네 2011.06.08 13:15 신고  댓글주소  수정/삭제  댓글쓰기

    책은 언제 나오는건가요!?

    • BlogIcon 산골 2011.08.10 20:33 신고  댓글주소  수정/삭제

      제가 분명히 답글을 단것 같은데 이상하게 답글이 안달렸네요~
      책은 최근에 많이 진행했고요 언젠가는 나올꺼에요~
      잘지내시죠 ^ ^

  2. BlogIcon 벤자민 2011.08.10 00:55 신고  댓글주소  수정/삭제  댓글쓰기

    Component.
    제가 신입일 때 교수님께서 저에게 해 주신 단어입니다.
    소스의 재활용.
    개발 경력 5년차인 지금도 개발일 하면서 마음에 두고 있는 단어입니다.
    소스 재사용을 이라는 단어를 보니 생각이 나네요.
    매일 같이 코딩하면서 늘 생각합니다.
    Component.