- 에스델의 마음이 행복한 오늘
- RURBANlife
- 지후대디의 Favorite
- 화영의 인생교향곡
- Never Say Never
- 워크뷰의 맛있는 도보여행
- 봉리브르
- 핑구야 날자의 IT와 일상
- IT로 보는 세상
- hCard 1.0.1 XMDP profile
- | Life is, Travel | enjoiyou…
- 잉여토기의 블로그
- 응답할래? 2016
- 랄랄라 라오니스
- SoulSky의 캐나다 생활일기
- 귀여운걸의 리뷰스토리
- childc
- 천추의 IT 이야기
- 사진과 여유
- 위드코딩 withcoding.com #####
- Soft Latte
- 사진은 권력이다
- 팔만대잡담
- 페르소나 persona
- 달리는 프로그래머
- Hood Rabbit의 맥(Mac) 갤러리
- 공상제작소
- ★ Another Side & Story
- :: Back to the Mac 블로그
- 제이펍의 참 똑똑한 2비트 책 이야기
- Programmer J
- linuxism
- kkamagui의 작업실
- SBH[ Programmer & Hacker ] Lab…
- Keep the Faith
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 코스트코
- Sheet
- 엑셀사이트
- 아메리카노
- 흐름출판
- 엑셀
- 스프레드시트
- 영어공부
- english grammar
- 무료영어사이트
- 한빛미디어
- 엑셀강의
- 엑셀강좌
- 기초영어
- 영어사이트
- 수영 술집
- CELL
- 영어회화
- 영어
- 엑셀공부
- 영문법
- 영어책추천
- 스타벅스
- 워크시트
- Excel
- 엑셀기초
- 맥주
- 셀
- 엑셀 2007
- 시트
- Today
- Total
빌노트의 노트
유지보수가 쉬운 소프트웨어 개발을 위한 객체지향 분석, 설계 그리고 디자인패턴 (Head First Object-Oriented Analysis & Design, Head First Design Patterns 객체지향 프로그래밍 책추천) 본문
유지보수가 쉬운 소프트웨어 개발을 위한 객체지향 분석, 설계 그리고 디자인패턴 (Head First Object-Oriented Analysis & Design, Head First Design Patterns 객체지향 프로그래밍 책추천)
빌노트 2014. 11. 28. 14:36
프로그래밍의 공부에는 끝이 없는 것 같습니다. 예전에는 프로그래밍 결과물만 나와도 좋았던 시절이 있었는데, 이제는 정말 멋진 소프트웨어 구조로 유지보수가 정말 쉬운 프로그램을 짜고 싶다는 생각이 듭니다. 객체지향 프로그래밍, 디자인 패턴이라는 말은 오래전부터 들었었고 한번 공부한적도 있습니다만 지금와서 보니 머릿속에 남은 것이 없네요. 남들이 알아볼 수 없는 구조의 스파게티 소스코드를 만드는 것도 하루 이틀이지, 책도 샀겠다, 이번 기회에 정말 제대로 공부해야겠습니다.
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'은 책의 내용이 그리 어렵지가 않아서 쉽게 읽혀지지만, 내용이 좀 많기 때문에 읽다보면 앞의 내용을 까먹을수도 있고, 객체지향 분석, 디자인에 대한 다양한 방법들을 언제 사용해야 할지 막막할 때가 있습니다. 이러한 문제점은 10장 OOA&D 생명주기를 읽다보면 해결됩니다. 특징리스트, 유스케이스 다이어그램, 문제점 분해하기, 요구사항, 도메인분석, 사전설계, 구현 등 배웠던 내용을 싹 정리하고 있어 막연했던 개념들을 다시 정립하는데 많은 도움이 되었습니다. 다음에 복습을 할 때는 10장만 봐도 될 것 같습니다.
Head First Design Patterns (디자인패턴)
'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) 시리즈 책은 좋아하는 사람은 진짜 좋아하고, 싫어하는 사람은 진짜 싫어하는 것 같습니다. 전체적으로 산만한 구조에 (번역자가 많이 노력을 했겠지만) 어설픈 영어식 유머는 좀 거슬리기까지 합니다. 생각하면서 천천히 볼 사람이면 추천하겠지만, 빨리 사용법을 익혀서 실전에 적용하려는 사람에게는 별로인 것 같습니다.
[IT도서] - 아두이노 상상을 스케치하다 VS 레시피로 배우는 아두이노 쿡북 (아두이노 Arduino 책 비교 분석, 추천)
[IT도서] - 레퍼런스용으로 곁에 두면 든든한 안드로이드 교제 '안드로이드 프로그래밍 정복' - 김상형 (Android Programming 책추천)