Head First Object-Oriented Analysis Design, 객체지향 분석 설계 방법론, Head First Design Patterns, 디자인패턴, 객체지향 프로그래밍, Java 프로그래밍, Design Patterns, Object-Oriented 프로그래밍, Head First 책, Object-Oriented Analysis Design, 프로그램 디자인, 소프트웨어 아키텍처, 소프트웨어 공학

프로그래밍의 공부에는 끝이 없는 것 같습니다. 예전에는 프로그래밍 결과물만 나와도 좋았던 시절이 있었는데, 이제는 정말 멋진 소프트웨어 구조로 유지보수가 정말 쉬운 프로그램을 짜고 싶다는 생각이 듭니다. 객체지향 프로그래밍, 디자인 패턴이라는 말은 오래전부터 들었었고 한번 공부한적도 있습니다만 지금와서 보니 머릿속에 남은 것이 없네요. 남들이 알아볼 수 없는 구조의 스파게티 소스코드를 만드는 것도 하루 이틀이지, 책도 샀겠다, 이번 기회에 정말 제대로 공부해야겠습니다.

 

Head First Object-Oriented Analysis & Design (객체지향 분석, 디자인)

Head First Object-Oriented Analysis Design, 객체지향 분석 설계 방법론, Head First Design Patterns, 디자인패턴, 객체지향 프로그래밍, Java 프로그래밍, Design Patterns, Object-Oriented 프로그래밍, Head First 책, Object-Oriented Analysis Design, 프로그램 디자인, 소프트웨어 아키텍처, 소프트웨어 공학

처음에 'Head First Object-Oriented Analysis Design''Head First Design Patterns' 둘 중 뭘 먼저 봐야하나 한참을 고민했습니다. 고민한 끝에 'Head First Design Patterns' 디자인패턴 책 먼저 읽었는데 잘못된 선택이었네요. 되도록이면 'Head First Object-Oriented Analysis Design' 책으로 객체지향 분석, 설계와 친해진 다음에 디자인패턴 책을 보길 권합니다. 난이도도 이 책이 더 쉽습니다. 참고로 두 책 다 자바 프로그래밍 언어를 알고 있어야 편하게 읽을 수 있습니다. 자바를 전혀 모른다면 곤란합니다.

 

 

쉬운 3단계로 위대한 소프트웨어 만들기

1. 여러분의 소프트웨어가 고객이 원하는 기능을 하도록 하세요.

2. 객체지향의 기본 원리를 적용해서 소프트웨어를 유연하게 하세요.

3. 유지보수와 재사용이 쉬운 디자인을 위해 노력하세요.

 

개발을 시작하는 처음부터 3단계 모두 진행하면 좋겠지만 현실은 보통 1, 2단계에서 머무는 것 같습니다. 회사에 정말 뛰어난 소프트웨어 아키텍쳐가 있다면 3단계 모두 이루어질지 모르나, 마감이 코앞인 상황에서 유지보수, 재사용은 생각할 겨를조차 없습니다. 그래서 프로그램을 다 개발을 하고 나서 리팩토링이라는 것을 하게 되는 것 같습니다. 처음은 힘들겠지만 노력하다보면 어느새 익숙해지는 날이 오겠지요. 그때가 고급 개발자로 불리는 날이 아닐지...

 

Head First Object-Oriented Analysis Design, 객체지향 분석 설계 방법론, Head First Design Patterns, 디자인패턴, 객체지향 프로그래밍, Java 프로그래밍, Design Patterns, Object-Oriented 프로그래밍, Head First 책, Object-Oriented Analysis Design, 프로그램 디자인, 소프트웨어 아키텍처, 소프트웨어 공학

'Head First Object-Oriented Analysis & Design'은 책의 내용이 그리 어렵지가 않아서 쉽게 읽혀지지만, 내용이 좀 많기 때문에 읽다보면 앞의 내용을 까먹을수도 있고, 객체지향 분석, 디자인에 대한 다양한 방법들을 언제 사용해야 할지 막막할 때가 있습니다. 이러한 문제점은 10장 OOA&D 생명주기를 읽다보면 해결됩니다. 특징리스트, 유스케이스 다이어그램, 문제점 분해하기, 요구사항, 도메인분석, 사전설계, 구현 등 배웠던 내용을 싹 정리하고 있어 막연했던 개념들을 다시 정립하는데 많은 도움이 되었습니다. 다음에 복습을 할 때는 10장만 봐도 될 것 같습니다.

 

Head First Design Patterns (디자인패턴)

Head First Object-Oriented Analysis Design, 객체지향 분석 설계 방법론, Head First Design Patterns, 디자인패턴, 객체지향 프로그래밍, Java 프로그래밍, Design Patterns, Object-Oriented 프로그래밍, Head First 책, Object-Oriented Analysis Design, 프로그램 디자인, 소프트웨어 아키텍처, 소프트웨어 공학

'Head First Object-Oriented Analysis & Design'을 객체지향 설계에 대한 개론서라고 볼 수 있다면, 'Head First Design Patterns'에서는 유지보수가 편리하도록 객체지향 프로그래밍을 위한 구체적인 방법(패턴)을 다루고 있습니다. 어느 정도 객체지향 프로그래밍 경험이 있어야 책의 내용을 제대로 이해할 수 있을 것 같습니다.

 

이 책에서 스트래티지 패턴을 시작으로 옵저버 패턴, 데코레이터 패턴, 팩토리 패턴, 싱글턴 패턴, 커맨드 패턴, 어댑터 패턴과 퍼사드 패턴, 템플릿 메소드 패턴, 이터레이터와 컴포지트 패턴, 스테이트 패턴, 프록시 패턴, 컴파운드 패턴을 다룹니다. 이것보다 상대적으로 덜 중요한 패턴(브리지, 빌더, 역할 사슬, 프라이웨이트, 인터프리터, 미디에이터, 메멘토, 프로토타입, 비지터 패턴)은 부록에서 간단히 설명만 합니다.

'Head First Design Patterns' 책에서 설명하는 디자인패턴 중에 정말 쉽게 이해되는 것도 있는 반면, 계속해서 쳐다봐야 이해되는 것도 있었습니다. 디자인패턴이 100% 체화 될 때까지 노력해야겠습니다.

 

 

디자인 패턴이란?

패턴이란 특정 컨텍스트 내에서 주어진 문제에 대한 해결책이다.

컨텍스트(context)란 패턴이 적용되는 상황을 뜻합니다. 반복적으로 일어날 수 있는 상황이어야만 합니다. 문제(problem)란 그 컨텍스트 태에서 이루고자 하는 목적을 뜻합니다. 하지만 컨텍스트 내에서 생길 수 있는 제약조건도 문제에 포함됩니다. 해결책(solution)이 바로 우리가 찾아내야 하는 것입니다. 누구든지 적용해서 일련의 제약조건 내에게 목적을 달성할 수 있는 일반적인 디자인을 뜻합니다. (P.617)

 

디자인 패턴은 소프트웨어 구조에 도움이 되는 상황에, 꼭 필요한 경우에만 사용해야하는데, 디자인 패턴을 처음 공부한 사람들은 패턴이 필요없는 상황에서도 무조건 적용하려고 노력한다고 합니다. 저 또한 하이에나처럼 디자인 패턴을 적용할 곳을 찾고 있는데, 간단하게 해결할 수 있는 문제를 복잡하게 해결하는 건 아닌지 고민해봐야겠습니다.

 

OOA&D책에 비해 'Head First Design Patterns'은 조금 어려웠습니다. 한번 읽어서는 안 될 것 같고, 두 번 정도 읽어야 감이 좀 잡힐 것 같습니다. 이런 패턴있다는 것은 알아도 적용할 줄 모르면 곤란하니, 이번에 공부할 때 제대로 해야겠습니다. 친구가 물어볼 때 '○○패턴을 사용해봐!"라고 말할 수 있을 때까지...

'Head First Object-Oriented Analysis & Design', 'Head First Design Patterns' 큰 맘먹고 두 책을 정독했는데 머릿속에 얼마나 남았는지 잘 모르겠습니다. 한번에 다 이해하고 암기해버리면 천재겠지요. 프로그래밍이란 것이 원래 그러하듯 책보고 공부하는 것에도 한계가 있습니다. 직접 프로그래밍을 하다 막히는 구석이 생기면 그 때 '아! 이거 어디서 봤더라?!'라고 말할 수 있으면 됐다고 생각합니다. 끝도 없는 프로그래밍 공부... 힘들지만 재미있는 여정이라고 생각합시다!

PS: 헤드퍼스트(Head First) 시리즈 책은 좋아하는 사람은 진짜 좋아하고, 싫어하는 사람은 진짜 싫어하는 것 같습니다. 전체적으로 산만한 구조에 (번역자가 많이 노력을 했겠지만) 어설픈 영어식 유머는 좀 거슬리기까지 합니다. 생각하면서 천천히 볼 사람이면 추천하겠지만, 빨리 사용법을 익혀서 실전에 적용하려는 사람에게는 별로인 것 같습니다.

 

 

저작자 표시
신고
   
Posted by 빌노트

댓글을 달아 주세요

  1. Favicon of http://estherstory.tistory.com BlogIcon 에스델 ♥ 2014.11.28 15:25 신고  댓글주소  수정/삭제  댓글쓰기

    공부에는 끝이 없는듯합니다.ㅎㅎ
    정말 멋진 소프트웨어 구조로
    정말 유지보수가 쉬운 프로그램을 꼭
    만들어 내시길 기대합니다.^^

  2. Favicon of http://zoahaza.tistory.com BlogIcon 나화영 2014.11.28 22:36 신고  댓글주소  수정/삭제  댓글쓰기

    html5도 Headfirst 시리즈가 있었던걸로 기억하는데 훑어보니까 내용이 너무 어렵더군요.ㅠㅠ

  3. Favicon of http://tokyo.innoya.com BlogIcon 이노(inno) 2014.11.29 02:44 신고  댓글주소  수정/삭제  댓글쓰기

    head first ... 오래간만에 보네요.
    머리가 점점 굳어져가는 나이인지라..
    개발은 취미로 전향하고 요즘은 관리직으로.. ^^



티스토리 툴바