한빛출판네트워크

IT/모바일

실전 자바 소프트웨어 개발

4가지 프로젝트로 배우는 최신 자바 개발 기법

한빛미디어

번역서

판매중

실전 자바 소프트웨어 개발
좋아요: 5
  • 저자 : 라울-게이브리얼 우르마 , 리처드 워버턴
  • 역자 : 우정은
  • 출간일 : 2020-06-20
  • 페이지 : 216쪽
  • ISBN : 9791162243176
  • 물류코드 :10317

합계 : 16,200

  • 실전 프로젝트로 배우는 최신 자바 개발 기법 레벨업 가이드 

     

    이제 막 경력을 쌓기 시작한 자바 개발자가 최신 소프트웨어 개발 방법까지 알기란 벅찬 일입니다. 테스트 주도 개발 같은 객체지향 원칙을 배워야 할지, 함수형 프로그래밍을 배워야 할지 갈피를 잡기도 어렵습니다. 이 책은 실전 프로젝트를 최신 자바 기법으로 개발하는 방법을 설명해 다양한 기술을 서로 연결하고 적용하는 법을 알려줍니다.

    입출금 내역 분석기, 문서 관리 시스템, 비즈니스 규칙 엔진, SNS를 직접 구현해보며 실무에 필요한 핵심 기술을 익힐 수 있습니다. 각 장을 따라 해보며 간단한 명령줄 배치 프로그램부터 점차 완성도 높은 응용프로그램을 구현해보세요. 기초 자바 사용법만 알아도 세련되고 견고하며 유지보수 가능한 자바 소프트웨어를 개발하는 최신 개발 방법을 배울 수 있습니다. 

     

     

    [장별 요약]

     

    1장 여행의 시작

    책에서 사용하는 개념과 원칙을 간단히 소개합니다. 

    2장 입출금 내역 분석기

    사람들이 자신의 재정 상황을 더 잘 이해하도록 은행 계좌 내역을 분석하는 프로그램을 구현합니다. 이 과정에서 단일 책임 원칙, 결합도, 응집도 같은 핵심 객체지향 디자인 기법을 배웁니다.

    3장 입출금 내역 분석기 확장판

    2장에서 만든 코드에 전략 디자인 패턴, 개방/폐쇄 원칙으로 기능을 추가하고, 예외를 이용해 실패를 처리하는 방법을 배웁니다. 

    4장 문서 관리 시스템

    잘나가는 의사가 환자 기록을 더 잘 관리하도록 돕습니다. 이 과정에서 소프트웨어 설계상의 상속, 리스코프 치환 원칙, 조합과 상속의 장단점을 소개합니다. 또한 자동화된 테스트 코드로 더 안정적인 소프트웨어를 개발하는 방법도 배웁니다.

    5장 비즈니스 규칙 엔진

    유연하고 유지보수하기 쉬운 핵심 비즈니스 규칙 엔진을 만드는 방법을 배웁니다. 테스트 주도 개발, 플루언트 API 개발, 인터페이스 분리 원칙을 알아봅니다.

    6장 트우터

    6~7장에서는 팔로워에게 짧은 메시지를 발송하는 기능을 제공하는 메시징 플랫폼 ‘트우터(Twootr)’를 만듭니다. 6장에서는 시스템 코어를 만들며, 주어진 요구 사항을 응용프로그램의 코어로 구현하는 방법을 배웁니다. 테스트 더블을 사용하는 방법을 익히고 코드베이스 내의 다양한 컴포넌트와 상호작용을 테스트합니다.

    7장 트우터 확장판

    6장에서 구현한 트우터를 확장합니다. 7장에서는 의존관계 역전 원칙을 설명하며, 이벤트 주도와 육각형 아키텍처(hexagonal architecture) 같은 전체적인 아키텍처를 선택하는 방법을 배웁니다. 테스트 자동화에 사용하는 스텁과 목 같은 테스트 더블을 설명하고, 함수형 프로그래밍 기법도 소개합니다.

    8장 결론

    이 책에서 소개한 주요 테마와 개념을 되짚어보며 참고할 만한 자료를 소개합니다.

     

     

    출판사 리뷰

     

    개발자들에게 필요한 핵심 기술을 프로젝트를 구현해보며 배우는 유용한 책!

     

    소프트웨어 개발과 관련된 여러 핵심 기술을 아는 사람은 많아도, 각 기술을 함께 사용하는 방법을 완벽하게 이해하는 사람은 흔치 않습니다. 때로는 무엇부터 익혀야 할지 몰라 체계적으로 기술을 습득하는 기회를 잡지 못하기도 합니다. 이 책은 프로젝트에 다양한 프로그래밍 기술을 사용하는 방법뿐만 아니라 각 기술이 얼마나 쉽고 재미있는지도 알려줍니다. 

     

    이 책의 4가지 프로젝트에서는 의뢰인 마크 버그저커와 치과 의사인 아바즈 선생님, 창업에 열정이 가득한 조의 요구 사항을 구현해봅니다. 장마다 도전 과제와 목표를 설정하고, 요구사항을 분석해 단계별로 구현한 다음, 되새김과 총정리로 한 번 더 내용을 되짚어봅니다. 도전 의식을 불러일으키는 의뢰인들의 요구 사항을 만족시켜보러 떠나볼까요?

     

    주요 내용

    • 핵심 디자인 원칙을 배워 유지보수 가능한 코드 작성하기
    • 유연성 높은 코드를 작성하고 예외 처리하기
    • 결합도, 응집도, SOLID 원칙을 이해하고 코드에 적용하기
    • 테스트 주도 개발로 새로운 설계 문제 해결하기
    • 큰 그림부터 애플리케이션 도메인의 핵심까지 거꾸로 생각해보기
    • 함수형 프로그래밍 개념을 이해하고 자바로 사용해보기
  • [저자] 라울-게이브리얼 우르마

    영국 데이터 과학자와 개발자를 선도하는 교육 커뮤니티인 케임브리지 스파크 공동 창업자로 변환 데이터 과학, AI 교육, 경력 개발 분야의 리더다. 케임브리지 대학교에서 컴퓨터 과학 박사 학위를 수료했다. 임페리얼 칼리지 런던 석사 과정에서 다수의 기술 혁신상을 수상하고 수석 졸업했다. 관심 연구 분야는 프로그래밍 언어, 컴파일러, 소스코드 분석, 머신러닝, 교육이다. 2017년에 자바 챔피언으로 임명되었다. 자바, 파이썬, AI, 비즈니스 등 다양한 분야의 국제적 연사로 활동했다. 여러 스타트업 프로젝트를 포함해 구글, 이베이, 오라클, 골드만삭스 등의 회사와 함께 일했다. 『모던 자바 인 액션』(한빛미디어, 2019)을 비롯한 책을 집필했다.

     

    [저자] 리처드 워버턴

    JVM 프로파일링 서비스를 제공하는 Opsian.com 공동 창업자이며 Artio FIX Engine 관리자다. 개발 도구, HFT, 네트워크 프로토콜 등 다양한 분야에서 개발자로 일했다. 『Java 8 Lambdas』(O’Reilly, 2014)를 집필했으며 Iteratr Learning과 플루럴사이트에서 개발자의 학습을 돕고 있다. 수많은 행사와 콘퍼런스에서 연사와 위원으로 활동한다. 워릭 대학교 컴퓨터 과학 박사 학위를 받았다.

    [역자] 우정은

    인하대학교 컴퓨터공학과를 졸업하고 LG전자, 썬마이크로시스템즈, 오라클 등에서 모바일 제품 관련 개발 일을 하다가 현재는 뉴질랜드 웰링턴에 있는 Flux Federation 사에서 모바일 앱 개발자로 새로운 인생을 즐기고 있다. 2010년 아이폰의 매력에 빠져들면서 번역 및 개발을 취미로 삼게 되었다. 2010년 이후로 꾸준히 서적을 번역한다.

     

  • chapter 1 여행의 시작

    1.1 테마

    1.2 각 장에서 다루는 내용

    1.3 되새김

     

    chapter 2 입출금 내역 분석기

    2.1 도전 과제

    2.2 목표

    2.3 입출금 내역 분석기 요구 사항

    2.4 KISS 원칙

    2.5 코드 유지보수성과 안티 패턴

    2.6 단일 책임 원칙

    2.7 응집도

    2.8 결합도

    2.9 테스트

    2.10 총정리

    2.11 되새김

    2.12 도전 과제를 완료하며

     

    chapter 3 입출금 내역 분석기 확장판

    3.1 도전 과제

    3.2 목표

    3.3 확장된 입출금 내역 분석기 요구 사항

    3.4 개방/폐쇄 원칙

    3.5 인터페이스 문제

    3.6 명시적 API vs 암묵적 API

    3.7 다양한 형식으로 내보내기

    3.8 예외 처리

    3.9 빌드 도구 사용

    3.10 총정리

    3.11 되새김

    3.12 도전 과제를 완료하며

     

    chapter 4 문서 관리 시스템

    4.1 도전 과제

    4.2 목표

    4.3 문서 관리 시스템 요구 사항

    4.4 설계 작업

    4.5 리스코프 치환 원칙(LSP)

    4.6 대안

    4.7 기존 코드 확장과 재사용

    4.8 테스트 위생

    4.9 총정리

    4.10 되새김

    4.11 도전 과제를 완료하며

     

    chapter 5 비즈니스 규칙 엔진

    5.1 도전 과제

    5.2 목표

    5.3 비즈니스 규칙 엔진 요구 사항

    5.4 테스트 주도 개발

    5.5 모킹

    5.6 조건 추가하기

    5.7 플루언트 API 설계

    5.8 총정리

    5.9 되새김

    5.10 도전 과제를 완료하며

     

    chapter 6 트우터

    6.1 도전 과제

    6.2 목표

    6.3 트우터 요구 사항

    6.4 설계 개요

    6.5 이벤트에서 설계까지

    6.6 작업 순서

    6.7 비밀번호와 보안

    6.8 팔로워와 트웃

    6.9 Position 객체

    6.10 총정리

    6.11 되새김

    6.12 도전 과제를 완료하며

     

    chapter 7 트우터 확장판

    7.1 도전 과제

    7.2 목표

    7.3 이전 줄거리

    7.4 영구 저장과 저장소 패턴

    7.5 함수형 프로그래밍

    7.6 사용자 인터페이스

    7.7 의존관계 역전과 의존관계 주입

    7.8 패키지와 빌드 시스템

    7.9 한계와 단순화

    7.10 총정리

    7.11 되새김

    7.12 도전 과제를 완료하며

     

    chapter 8 결론

    8.1 프로젝트 기반 구조

    8.2 되새김

    8.3 의식적 연습

    8.4 다음 단계와 추가 자료 

  •  


    • KakaoTalk_20200824_201844960.jpg


       



      실전 자바 소프트웨어 개발



      (Real-World Software Development)


       



      4가지 프로젝트로 배우는 최신 자바 개발 기법


       



      자바, 객체지향 언어를 공부하다 보면 문법보다 먼저 개념이나 원칙이라는 것을 먼저 배우라고는 조언을 듣습니다.


       



      문법과 프레임워크 사용법만 익혀도 개발은 가능하겠지만 좋은 품질의 소프트웨어를 개발하려면 이 책에서 나열하고 있는 개념들을 시간을 내서 정말 열심히 공부해야 할 것입니다.


       



      실전 코딩은 언제나 탄탄한 이론의 이해가 바탕이 되어야 함으로 디자인 패턴, SOLID 등은 따로 책을 한권 보든지 영상으로 미리 공부를 하고 이 책을 보는게 도움이 될 것입니다. (특히 , 디자인 패턴을 미리 좀 알고 있어야 이 책의 예제를 보는데 도움이 됩니다.)


       



      책에서 다루고 있는 개념이라면 디자인 패턴, 테스트 주도 개발, 함수형 프로그래밍, SOLID 원칙 등등 인데, 이것을 실전에 어떻게 사용해야 하는지 특별한 예제를 이용하여 설명하고 있습니다.


       



      특별한 예제는 입출금 내역 분석기, 문서관리시스템, 비즈니스 규칙 엔진, 트우터 등 입니다.



      도전과제를 풀고 즐기는 개발자가 아니더라도 이런 종류의 책으로 공부하다 보면 좀 더 훌륭한 해법을 찾아 개발을 즐기는 시간을 가지게 될 것 입니다. 


       


    • 



      IMG_3879.jpg


       


       


       



      의뢰인의 요구사항을 분석해 구현해본다는 컨셉이 재밌어서 고른 책.



      한빛미디어의 책 난이도 분류는 초중급용으로 되어있다.


       


       



      도전과제가 주어지고, 목표를 확인하고, 요구 사항을 분석하여 예제와 함께 구현해보고 총정리, 되새김 하는 흐름이 반복된다.



      연결고리가 잘 짜여진, 구성이 괜찮은 책이다.


       


       



      평소 크게 생각하지 않고 사용하고 있던 것들에 대해 다시 한 번 짚어볼 수 있었는데, 그게 실무와 꽤나 밀접해서 흥미롭게 읽었다.


       


       



      다만 디자인 패턴에 대한 지식이 많지 않아 책을 읽는 중간 중간 개념적인 부분을 찾아봐야 했다.



      디자인 패턴에 대한 지식이 어느 정도는 있지만 실제로 실무에서 어떻게 적용할지 감이 오지 않는 개발자가 보면 좋을 듯하다.


       


       



      책이 얇아서 빠르게 훑어볼 수 있지만 그래서 조금 아쉽기도 하다.



      분량을 조금 더 늘리고 내용을 더 담았더라도 지루하지 않게 읽을 수 있었을 것.


       


       



      초급책 떼고 이제 뭘 봐야하지? 하는 개발자라면, 유우명한 중고급 필독서 읽기 전 한 번쯤 읽고 넘어가면 좋을 듯.



      

    • 실전 자바 소프트웨어 개발 - 예제로 쉽게 배우는 좋은 소프트웨어 개발 방법


       



      최신 자바 개발 기법?


      제목만 보고 최신 자바 기술을 다루는 책인줄 알았다. 최신 자바 기술을 확인 하는 것이 목적이라면 저자의 다른 책인 모던 자바 인 액션을 보는 편이 낫다.


       


      물론 7장에서는 람다표현식, 스트림, Optional 등의 최신(?) 자바기술을 다루지만, 이 얇은 책에서 소개 이상의 내용을 기대 하기는 어렵다. 


       


      이 책의 목적은 최신 기술을 소개하는 것이 아니라 좋은 소프트웨어를 개발 하는 방법을 배우는 것이다.


       



      SOLID?


      책에서는 소프트웨어 개발과 관련한 여러 핵심 주제들을 다룬다. 언젠가의 수업에서 들었던 듯한 SOLID 원칙을 책의 여러 챕터를 걸쳐 예제와 함께 소개 한다.


       


      소프트웨어 설계에 관한 내용이다 보니 단순히 정의나 설명 만으로는 이해하기가 많이 힘든데, 실제 예제 (단순 예제가 아니라, 미니 프로젝트에 기반한 예제) 를 통해 이 원칙을 어떻게 구현 하는지, 구현 하는데에 어떤 디자인 패턴이 사용되는지를 설명 한다.  


       



      누가 이 책을 봐야 할까?


      자바도 사용 할 줄 알고, 스프링프레임워크도 사용 할 줄 알지만, 프레임워크가 왜 그렇게 구성되었는지 이해를 못할 때 꼭 읽어 봐야 한다고 생각 한다. 스프링프레임워크를 처음 배울 때 의존성 주입이라는 단어를 이해 못해서 고생 하던 때가 있었는데, 이 책을 먼저 읽고 의존성 주입에 관한 내용을 배웠다면, 이해가 훨씬 빨랐을거라고 생각한다.


       


      물론 저자는 프로그래밍 경력이 조금 생기기 시작한 주니어 개발자라면 반드시 읽어야 한다고 이야기 한다.


       



      프로젝트 기반 설명?


      소프트웨어 개발 개념을 쉽게 이해 할 수 있도록 예제 프로젝트를 통해 설명 한다. 입출금 내역 분석기 프로젝트는 실제로 많이 사용하는  파일을 읽어서 업무를 처리하는 내용을 진행 하며, 소프트웨어 설계의 원칙 같은 큰 내용과, 예외를 처리하는 등의 소소하거나 중요한 내용 또한 메이븐 같은 빌드 도구에 대한 설명 까지 진행 하고 있다. 물론 구체적인 사용법은 따로 배우면 된다.


       



      마치며


      인덱스 포함 216페이지의 얇은 책이다.


      어렵지 않은 책이지만, 사실은 어려운 내용을 다루고 있기 때문에  단순히 책을 다 읽었다고 해서 모든 내용을 이해하거나, 이해한 내용을 바로 사용 할 수 있는것은 아니다.


       


      그래서 저자는 “중요한 것은 이를 연습(의식적 연습 : 목표를 가진 체계적인 연습)하는 것이다" 라고 이야기 한다. 반복하여 연습 하다 보면 의식적으로 사용하지 않더라도 습관으로 자리 잡는다. 모든 배움이 그렇겠지만 소프트웨어 개발의 세계에서도 통하는 이야기이다. 


       



      사족


      소프트웨어 카타라는 단어를 처음 들어서 검색해보았다. 일본에서 유래된 단어인듯 한데, 해석 하자면 작은 훈련용 코드를 많이 풀어보았다는 말인듯 한다. 

    •  



      KakaoTalk_Photo_2020-08-23-22-46-14.jpeg


       


       


       


       


      오늘 리뷰할 책은 '실전 자바 소프트웨어 개발' 입니다.


       


      라울-게이브리얼 우르마, 리처드 워버턴 지음 / 우정은 옮김, 한빛미디어 출판사 도서입니다.


       


      실전 자바 소프트웨어 개발 책의 구성이 여러 프로젝트를 실습하며


      SOLID 원칙과 디자인 패턴, 테스트 주도 개발(TDD), 자바8 개념을 배운다.


       


      어떤 상황의 자바 프로젝트에서 위 같은 개념을 적용시킬 수 있는지 궁금해서 책을 읽게 되었습니다!


      각 프로젝트마다 비즈니스 상황과 해결해야 할 목표가 주어지고, 하나씩 원칙 또는 패턴을 적용해가면서 해결해 나가는 편집입니다.


       


      한 줄 평은, 자바 또는 소프트웨어 공학을 공부하다가 실제로 실전 프로젝트에 적용해보는 연습을 해보고 싶다 하는 분들께 추천드리는 책입니다.


       


      아래는 실제 책 내용 일부입니다.


      챕터마다 도전 과제와 목표가 나오며, 어떻게 설계해 나가는지 차근 차근 보여줍니다.


      모든 디자인 패턴과 TDD 원칙이 나오지는 않지만, 어떻게 적용해 나가야 하는지 충분히 알 수 있는 구성이었습니다.


       



      소프트웨어 공학 지식 뿐 아니라 자바 언어 자체의 기능도 많이 소개하고 있으니, 자바 공부와 소프트웨어 공학 공부를 병행하고자 하면 굉장히 좋은 책입니다. 


       



      1.jpeg


       



      2.jpeg


       


    • 실전 자바 소프트웨어 개발 - 한빛미디어


       



      real.jpeg


       


       


      Real-World Software Development .. 책 제목이다.


       


      리얼월드.. 실세계를 반영한다는 것이 주요 컨셉으로 보인다. 책을 읽다보면 갓 시작한 개발자보다는 산전수전 겪어 낸 후, 이제는 진짜로 해내야 한다는 부담감을 인지하게 된 중급 이상의 개발자들이 봐야 할 책으로 여겨진다. 아니 그들을 위해 준비된 책이다.


       


      이 책에 대하여 글을 작성하려고 하는데 정말로 "이 책에 대하여" 섹션에 전부 적혀 잘 드러나 있다. 사실 여러 해 프로그래밍 스터디에 참석 또는 진행을 해보면서 늘 새로운 것을 배우거나 접한다. 그러나 그러한 많은 내용들을 어디에 어떻게 얼마나 적용하고 반영하고 엮어낼 수 있는가는 늘 새로운 도전과제이며 숙제로 여기는 자학적 질문이다. 이 책은 중간 요소 요소에 여러분이 마땅히 학습한 내용들이 담겨있다. 객체지향 언어의 속성이라든지, 테스트 기반의 개발 과정이라든지 하는 것 말이다. 최근에는 이런 것들을 도대체 어떻게 학습하여야 하는가? 에 대한 답을 제시하는 온라인 학습 과정들이 많이 개설되어 있다. 그렇게 학습을 하고 자.. 그 다음은?!


       


      이 책은 그렇게 여러분이 문법을 학습한 후 옹알이 ( 미안하다 ... 마땅한 단계 표현력이 부족하다.) 수준을 갓 벗어나 그대들이 하고 싶은 말을 할 수 있는 단계에서 드디어 작품이나 상품을 만들고자 하는 순간에 아주 절묘한 타이밍에 손에 쥐고 있어야 한다고 본다. 그대들의 고민을 차근 차근 드러내 주면서 고수들은 이렇게 해결한다고 보여주는 마치 고수들의 비밀스러운 기법을 서술한 책처럼 느껴진다.


       


      중급 이상의 개발자들에게 기본기를 다시금 새기고 고수가 되기 위한 안내 책자라고 보면 되겠다. 빌드 도구, 객체 지향의 기본, 소프트웨어 디자인, 도메인 지식, 테스트 도구 등은 여러분이 이미 학습을 했다고 가정하고 필요한 부분에서 언급만 해준다. (그래서 초급자가 보기에는 어려울 수 있... 어렵다.) 책이 성의가 없는 것이 아니라 이미 알고 있어야 한다는 것을 간접적으로 더욱 강하게 어필 하는 것이 아닐까 싶다. 적어도.... Real-World 단계의 개발자라면 말이다.


       


      이 책은 최근 유행? 처럼 번지고 있는 코드 리뷰 온라인 서비스의 활자 책 버전이라고 생각하면 딱 어울린다. 4개의 프로젝트가 주어지고 상황을 해결해가며 여러분의 코드가 점점 이 책에서 제시하는 방향으로 흘러가면서 자연스럽게 다양한 기법들을 익히게 한다. 천천히 그리고 스스로 고수들의 비법을 자신의 것으로 만들고 싶은 개발자들이 읽었으면 하며, 한가지 부탁하고 싶은 것은 절대 혼자 보지 말고, 동료를 만들어서 함께 보며 어려운 부분을 함께 이해하고 도우면서 이 책을 마무리 하는 것은 어떨까 하는 생각을 해 본다. 혼자는 분명 쉽게 지쳐서 골 지점에 도착하기 전에 책을 덮을 가능성이 농후하다. 책에서 기본이라고 여기며 간략하게 제시하는 내용들도 함께 하는 동료들과 함께 서로 알려주거나 같이 검색해서 조금 늦더라도 진도를 전부 완료하고 나면 스스로도 이제는 어떤 학습을 더 해야하고 어떤 부분에서 흥미를 느끼는지 알게 되면서 어느 새 손에는 진검이 들려 있을 것으로 본다.


       


      날선 진검승부를 자극하는 책 내용이 정말 맘에 들었다. 어느 정도 수준 이상의 개발자가 모여 스터디를 하면 참 재미있을 법한 책이다. 중급 이상의 개발자가 스스로 성장을 독려할 할 수 있게 돕는 내용으로 그들의 갈증을 해소할 수 있을 법한 글로 책을 집필 예정인데, 이 책은 그들에게 리얼 월드는 이렇다고 먼저 보여주고 싶은 책이 되었다.




    •  


       


      1.  자바 개발에 관해


       


      - 자 바개발을 약 5년여 하고 있지만, 자바 개발을 잘하기란 쉽지 않다. 객체지향의 패러다임을 가지고 있는 언어로써 디자인 패턴, SOLID 원칙 등 단순히 기능 구현만 잘하면되는 것이 아니라, 유지 보수와 안정성을 위해 다양한 것들을 고려 해야한다.  각종 프레임워크와 라이브러리의 다양한 기능들 속에서 그리고 짧은 개발기간으로 인해 시간에 쫓기며 개발하다보면 여러 원칙들을 잊고 개발할때가 많다.  이러한 상황속에서 실무에서 개발할때 습관적으로 중요한 원칙을 잊지 않고 프로그래밍 하려면 훈련이 필요하다.  이러한 훈련을 목적으로 해당 서적의 여러 예제들을 따라 해보게 되었다.


       


      2. 책에 관하여


       


      - 입출금 내역 분석기 및 확장, 문서 관리 시스템, 비즈니스 규칙 엔진, 트우터 및 확장 4개의 예제 프로젝트로 책이 구성되어 있다.


      - 주변에서 흔히 볼수 있는 예제를 통해 어려운 디자인 패턴과 아키텍쳐 를 설명하고 있다.


       


       


      3. 책의 장점


      - 보통 디자인 패턴 서적을 보면 실무에서 어떻게 써야할지 감이 잘 오지 않는데 반해,  이 책은 실무적인 예제를 통해 디자인 패턴을 요소 요소에 설명하고 있다.


      - 단순히 디자인 패턴 뿐만 아니라, 테스트, 빌드 시스템, 실제 프로젝트에서 프로젝트를 안정화 시키기 위한 여러 요소들을 설명하고 있다.


       


      4. 책의 단점


       


      - 4개의 예제가 무척 좋고 설명도 잘되어 있기는 하나, 아쉬운점은 분량이다.  조금 더 다양한 예제로 더 많은 분량을 포함했으면 좋지 않았을까 한다.





      출처: https://cionman.tistory.com/92 [Suwoni블로그]

    •  본인은 자바로 여러 프로젝트를 진행하면서도 디자인 원칙에 대해 관심을 가지고 따로 공부하거나 함수형 프로그래밍 개념에 대해 깊게 배워본 적이 없었다. 그렇기에 프로젝트를 진행하면서 많은 부족함을 느꼈고, 무지에 의해 자연스럽게 그 부족함을 채울 수 있는 기회를 만나지 못 하였다.


       



      KakaoTalk_20200823_183851985.jpg


       


       


       그렇게 하찮은 코드 몽키였던 필자가 우연한 기회로 이 책을 만나고, 드디어 제대로 된 '자바 공부'를 할 수 있었다. 그냥 단순하게 문법만을 알려주는 것이 아니라 실제 프로젝트에서의 개발에 필요한 디자인 원칙부터 개발 기법, 함수형 프로그래밍을 만날 수 있게 해 주었다.


       자바를 만난 지 어언 9년이 가까워지고 있는 데 이제서야 제대로 된 공부를 시작하였다는 것이 부끄럽기도 하지만, 이렇게 좋은 기회를 통해 제대로 된 공부를 할 수 있는 계기가 마련되었다는 사실에 새삼 감사하고 있다.


       


       비단 자바 프로젝트 뿐만 아니라 개발자로서의 인생에서 큰 도움을 줄 수 있는 그런 공부가 되는 책이라 생각된다.


       앞으로 누군가, 과거의 나와 같이 공부할 줄 모르는 자가 있다면 지체없이 이 책을 품에 안겨주고 싶다.


    • 실전 자바 소프트웨어 개발.png


      실무에서 자바로 소프트웨어를 만들 때, 어떻게 만드는지 그리고, 디자인 패턴과 SOLID 원칙이 왜 필요하고, 어떻게 적용하는지 보여줍니다.


       


      자바로 단순하게 코딩하는 수준이 아니라


      자바를 이용하여 소프트웨어를 어떻게 개발하는지 보여줍니다.


       


      말하자면, 덧셈과 곱셈 알고 단순 계산을 열심히 반복하는 수준에서 벗어나 연산의 원리를 이해하고 활용하는, 지금까지 알던 것과 다른 시야를 만나게 해 준다고 할까요.


       


       


      1에서 10까지 더하는 문제로 비유해 보겠습니다.


      처음에는 단순 덧셈을 떠올립니다.


      덧셈을 10번하면 되니 큰 문제는 아닙니다.


      하지만, 이런 상황은 곧 어려움에 부딪칠 수밖에 없습니다.


      요구 사항은 바뀌니까요.


       


      단순한 해결에서 한걸음 나아가


       1,  2, 3, …, 9, 10


      10, 9, 8, …, 2,   1


      와 같은 아이디어를 통해 11이 10번 반복하는 규칙을 보여 줍니다.


      이를 통해 (1 + 10) * 10하여 둘로 나누어 결과를 얻습니다.


      ((1 + n) * n) / 2


      고정된 숫자보다 좀 더 활용할 수 있는 방법을 보여줍니다.


       


      여기까지 시야가 트이면 굳이 1부터 시작하지 않더라도 연속된 숫자의 합이라면 비슷한 형태로 구할 수 있겠다는데 생각이 다다릅니다.


      m부터 시작하여 n까지 연속하는 숫자의 합을 계산하고자 합니다.


      ((m + n) * (n - m + 1)) / 2


       


      이로써, 0보다 크고 연속되어 있는 숫자들을 모두 더할 때 사용할 수 있는 패턴을 보여줍니다.


      물론, 0이나 음수가 있으면 다른 얘기가 되니 생각을 달리해야 합니다만.


       


       


      디자인 패턴, SOLID 원칙


      워낙 많이 언급되는 용어들이라 뭘 얘기하는 건지 대충 알긴 아는데, 실제로 언제, 어디에, 어떻게 적용해야 하는지 막막한 경우가 많습니다.


       


      이 책을 통해 막막함을 걷어내기 시작할 수 있으리라 생각합니다.


      프로젝트 단위로 각 장을 구성하고 있습니다.


      각 프로젝트에서 얻고자 하는 목표가 분명합니다.


      실력 좋은 선배가 같이 프로젝트하며 옆에서 차근차근 일러주고, 조목조목 알려주며 개발에 눈을 뜨게 해주는 것 같습니다.


      다만, 방향을 알려주지만 도달하는 건 각자의 몫이라는 걸 잊으시면 안 됩니다.


       


       



      소프트웨어



      빠르고 안정적인 개발과 쉬운 유지보수라는 개념을 다시 생각해 보게 합니다.


       


    • > 진행에 앞서


      자바는 내가 개발이라는 것에 진지하게 접했던 15년 전 이전부터 지금까지 꾸준히 사랑받아온 언어임에는 틀림이 없다. 리뷰를 하는 현 시점에도 서버 프로그래밍에서는 자바를 빼놓고 말하기는 어렵다. 프로그래밍의 패러다임이 발전해온 만큼 자바도 발맞추어 발전했으며, 그래서 자바를 이용해서 프로그래밍의 다양한 기법이나 원리에 대해서 익히는것이 가능하다는 이야기가 되기도 한다.






      이러한 이야기를 장황하게 펼치면서 시작하는 것은 그만큼 자바라는 소재를 가지고 책을 접하긴 하지만, 이 책에서 다루고 있는 점이 결코 자바에만 국한되어 언급될만한 이야기는 아닐 수 있다는 것이다. 실재적인 관점으로 이해하기 쉽게 다룰 수 있지만, 이를 일반적인 관점으로 이끌어내어도 어울리는 부분으로 충분히 끌어낼 수 있다. 그러한 기대감으로 이 책을 보기 시작하였다.


       



      > 책에 대한 간단한 정보


      영문으로는 Real-World Software Development. 실전 자바 소프트웨어 개발이라는 책이다. 그리고 부제로는 4가지 프로젝트로 배우는 최신 자바 개발 기법으로 되어있다.


      이 책에서는 소프트웨어 디자인과 아키텍처 중심으로 내용을 실어놓았으며, 그것들에 대한 원칙을 주로 언급하고 있다. 실제 프로젝트를 대상으로 하였으나, 단순히 어떤 프로젝트는 어떻게 진행할 수 있다는 따라하기에서 그치는 것이 아닌, 각 프로젝트를 통해 배울 수 있는 개발 원칙을 알리는데 주 목적이 있다는 것이다.


      입출금 내역 분석기 및 확장, 문서 관리 시스템, 비즈니스 규칙 엔진, 트우터 및 확장. 이 네가지 프로젝트이다. 실제 주변에서 있을법한 프로젝트를 중심으로 진행하며 설명했기 때문에 편안하게 와 닿는데 노력했다는 점이 보였다.


      이 책의 표지


      이처럼 각 원칙을 언급한다. 원칙이 코드내에 반영되는 방식을 이해시킨다.


      현재 안드로이드에서 개발방법론으로 빠지지 않고 등장하는 DI도 나온다.


      엄청난 개념을 다루고 있음을 어필하는 뒷표지


       







      > 괜찮은 부분


      1. 다양한 설계 및 개발 원칙과 실제 코드의 접목






      설계 및 개발 원칙은 이미 대학때 많이 배웠던 개발자가 많을 것이다. 하지만, 이 개발 원칙들을 가지고 실제 개발현장에 왔을 때 어떻게 쓰이는 것인지 제대로 이해하고 반영하는 개발자는 그리 많지 않을 것이다. 가령 SOLID라는 원칙이 있다고 할 때, 면접을 잘 보기 위해서는 SOLID를 외웠겠지만, 막상 필드에서는 이것을 잘 적용하기 위해 노력해도 쉽지 않고, 그것을 적용하려고 노력하는 사람 또한 찾기 쉽지 않다. 좋은 프로그래밍을 위해서는 필요한 지식임에는 틀림없기 때문에 이에 관해 최대한 녹아들게 이해시키려 했던 부분이 좋았다.






      2. 개발의 기본부터 모던언어에 이르기까지 소재의 다양화






      자바에서 쉽게 볼 수 있는 equals와 hashCode와 같은 부분은 많이 접하지만, 그 원리에 대해서는 가볍게 넘기며 개발을 진행하는 개발자들이 많을 것이다. 또한 람다와 스트림 등과 같은 함수형 프로그래밍에 도입되어 있는 방법들에 대해서도 잘 알지 못하면 실제 개발에서 활용하기 어렵다. 그래서 설계기법에 못지 않게 개발기법도 중요한 부분이 많은데 이러한 부분들을 다룸으로써 생각할 수 있는 기회를 제공하였다.






      3. 실제 코드 위주의 설명으로 이해를 도모함






      개발 서적이므로 코드가 포함되어있는 것은 어쩌면 당연할 것이다. 하지만, 코드 스니펫만으로 이루어진 것이 아닌, 프로젝트 단위로 코드를 실어놓았기 때문에, 이해를 돕는데 매우 중요한 역할을 담당하고 있다. 완전한 코드를 책에 다 실어놓지는 않았지만, github을 통하여 모든 코드를 제공받을 수 있으므로, 눈으로 확인하며 이해하는 데에는 문제가 없다. 실제 회사에서 개발할 때 볼법한 상황들이 많이 연출되어 있기 때문에 충분히 제공된 코드를 익히면서 이해를 한다면 많은 도움이 될 것으로 보인다.


       



      > 아쉬운 부분


      1. 많은 내용을 담기엔 부족한 분량






      앞서 언급하였지만, 이 책에서는 정말 다양한 설계 및 개발 기법에 대하여 다루고 있다. 그런데 전체적인 지면이 적은 편이다. 그래서 각 개념에 대해서 정도의 차이는 있지만, 상세하게 다루고 있지는 않다. 정확히 말하자면 키워드의 나열에 가까운 느낌이다. 그래서 이러한 개념들을 어디선가 한번 쯤 접했다면, 그래도 다시 찾아보면서 알 수도 있겠지만, 처음 접한 단어들이라면 아마 책을 읽는데 상당한 시간이 소요될 것이라고 생각이 든다. 어쩌면 읽다가 포기할 수도 있다.






      2. 각 개념 및 핵심정리가 보기 쉽지 않은 편






      여기에서는 많은 개념을 다루고 있는데, 각 개념을 각 본문 중간중간에 심어놓았다. 그런데 그 개념을 각 단원별로 모아서 정리해놓고 있는 것은 아니다. 따라서 각 내용을 자세히 읽고 알아서 필요한 내용을 찾아서 정리하면서 읽어야 한다. 하지만, 시간이 부족하다면, 핵심을 읽고싶은 경우도 많지만 그런 때에 찾아서 읽기는 어려운 편이다. 이 책을 제대로 접하기 위해서는 시간을 적잖게 투자할 생각으로 대하는 편이 좋다.


       



      > 개인적인 평점



      - 가격: 8 / 10



      - 내용: 9 / 10



      - 디자인: 7 / 10



      - 구성: 6 / 10


       



      > 정보



      저자: 라울-게이브리얼 우리마, 리처드 워버턴



      옮긴이: 우정은



      출판사: 한빛미디어



      가격: 18,000원



      전체 페이지: 216페이지


       



      ** 이 리뷰는 "한빛미디어"를 통해 도서를 제공받아 작성하였습니다.

    • 자바 프로그래밍 언어는 한국에서 정부와 기업 시스템 통합 프로젝트 제작에 쓰입니다.


       


      제임스 고슬링은 1991년 셋톱 프로젝트를 위해 자바 언어를 만들었습니다.


       


      1995년 자바 1.0을 첫 공개 했는데요.


      처음부터 성장한 것은 아닙니다.


       


      자바가 주류 언어로 된 것은 웹의 등장으로 성공하게 됐습니다.


       


      자바 개발자로 경력을 쌓으시는 분들에게 좋은 책을 소개해 드리려 합니다.


       


      책 제목은 ‘실전 자바 소프트웨어 개발’입니다.


       


      최신 자바 기법으로 소프트웨어 개발하는 방법을 알려줍니다.


       


      이 책을 통해 최신 개발 방법을 익히는 시간이 되시길 바랍니다.


       



      입출금.png


       


       


      ◆ 입출금 내역 분석기


      책의 예제로 입출금 내역 분석기를 다룹니다.


       


      입출금 내역 분석은 자신의 재정 상황을 이해하려고 만든 분석기입니다.


       


      2장에서 단일 책임 원칙에 대해서도 배웁니다.


       


      객체 지향적으로 은행 계좌 내역을 분석하는 프로그램입니다.


      디자인 패턴과 개방 폐쇄/원칙을 이용합니다.


       


      프로젝트를 통해 객체지향 개념을 배울 수 있습니다.


       



      plblom.png


       


       


      ◆ 개발 문제 해결


      프로그래밍을 개발할 때 문제를 만나면 해결해야 됩니다.


       


      문제를 처음 보게 되면 해결하는 데 시간이 소요되는데요.


      이미 경험한 사람들이 해법을 찾아 고치기도 합니다.


       


      개발 오류를 보고 어디에서 에러가 났는지 확인도 할 수 있습니다.


       


      개발 문제를 해결하려면 컴퓨터 과학 지식이 필요합니다.


       


      컴퓨터 과학 지식 중에는 결합도와 응집도가 있습니다.


       


      책의 2장에서 이 부분을 설명해줍니다.


       


      독립적인 모듈이 되려면 결합도는 낮아야 합니다.


       


      반대로 응집도의 경우 하나의 기능을 수행하는 연관성인데요.


      독립적인 모듈이 되려면 응집도는 강해져야 합니다.


       


      끝으로 자바 실전 프로젝트를 할 수 있도록 알려주도록 책이 구성되어 있습니다.


       


      리스코프 치한 원칙, 인터페이스 분리 원칙, 의존관계 역전 원칙도 알려줍니다.


       


      입출금 내역 프로젝트 외에도 알려주는 것이 있는데요.


      문서 관리 시스템과 비즈니스 규칙 트우터를 통해 SOLID 원칙을 배울 수 있습니다.


       


      객체지향 프로그래밍 언어는 자바로 짠다고 다 같은 객체지향은 아닙니다.


       


      객체지향의 특징을 알고 짠 것이 객체지향 프로그래밍이라 할 수 있습니다.


       


      이 책을 통해 객체지향에 대해 이해하며 실전 지식도 쌓으시길 바랍니다.


       



      표지.png


       


       

    •  


      KakaoTalk_Photo_2020-08-23-15-19-57.jpeg


       


       

      스프링을 사용하지 않고 자바로 어떻게 개발할 수 있나 궁금했었다. 실전 자바 소프트웨어 개발 책의 목록을 보게 되면 프레임워크를 따로 쓰지 않으면서 개발해나간다는 것을 알 수 있다.

       


      책 자체의 길이는 솔직히 많은 내용을 담기에는 분량이 작은 것이 사실이다. 그러다보니 디자인 패턴에 대해 자세히 설명한다기 보다는 너네가 배운 디자인 패턴을 이렇게 적용할 수 있어 라는 식으로 설명하는 느낌이였다. 즉, 자바도 배웠고 디자인 패턴도 배웠는데 이건 어떻게 사용해야 하지? 하는 사람들에게 필요한 책이라는 생각이 들었다.

       

      책 내용 자체도 어려운 편에 속하지는 않는다. 하지만 위에서 이야기했듯이 디자인 패턴을 아무것도 모른다면 생략되어 있는 내용들이 많아 읽는 도중에 막힐 수도 있을 것 같았다. 그래도 책 자체가 어렵지는 않아서 빠르게 한번 훝어보고 싶은 사람에게 어울릴 것 같다.

       

      결론적으로 막 자바를 끝내서 이제 뭘 공부할까 고민하는 사람들 혹은 앞에서 이야기했지만 단순히 스프링부터 공부하면서 다른 원칙들을 잊은 채 스프링에서 제공된 함수만을 쓰면서 원리를 잊어버리고 사는 분들에게 추천하고 싶은 책이다. 하지만 이미 자바를 몇년 써왔거나 회사에서 테스트코드를 위주로 디자인 패턴을 적용하면서 사용하는 사람에게는 시간낭비일 수 있을 것 같으니 추천하지 않는다.

       

       


      KakaoTalk_Photo_2020-08-23-15-20-11.jpeg


       


       

      책에서 4가지 프로젝트로 배우지만 각 챕터의 구성은 비슷하다. 먼저 실제로 어떤 요구사항이 들어왔고 어떤 기능을 개발해야 할지 리스트를 정리한다. 그러면서 이 요구사항에서는 어떤 디자인 패턴을 적용해서 개발하는 것이 좋을지 설명하면서 하나하나 개발해 나간다. 그러다보니 처음에는 간단하게 하나의 클래스에서 KISS(Keep it small and simple) 원칙만을 지키면서 개발해나가지만 그 이후에는 DRY 원칙으로 시작해서 SOLID 원칙을 어떻게 지켜나가야 하는지에 대해 개발한다. 또한 뒷장으로 가게되면 TDD 개발 방법론을 이야기해주면서 함수형 프로그래밍에 대해서 간략하게 이야기햐고 끝이 난다.

       

      이 책을 읽다보면 아 이런식으로 디자인 패턴들이 적용되고 있고 "스프링" 이란 프레임워크도 이런 원칙을 지키고 있겠구나 하는 생각이 들게 만들었었다. 다만 조금 아쉬웠던 점은 앞에서도 이야기했지만 생략되어서 이야기된거 같다는 생각이 많이 들었다는 점이였다.즉, 개인적으로는 다시 한번 개념을 공부한다는 생각으로 읽으니 재밌게, 빠르게 한번 읽어볼 수 있었지만 어떤 사람들에게는 조금 아쉬울수도 있지 않을가? 하는 생각이 들었다.

       

      혹시 이 책을 구매하고자 하는 분이라면 "내가 디자인 패턴을 한번쯤 공부해 본 적이 있었는지" 생각해보고 그렇지 않다면 이 책을 읽으면서 디자인 패턴 용어가 나왔을 때 함께 볼 수 있는 개념서 정도 하나 함께 읽으면 좋을 것 같다고 생각한다. 

       








    • O'REILLY의 새로운 책이 나왔습니다.


      '실전 자바 소프트웨어 개발'이라는 책으로 이번 표지는 칼라망가베이라는 구세계원숭이를 모델로 하고 있습니다.


      많은 책들이 존재하지만 좋은 품질의 소프트웨어를 개발하는 데 실용적인 도움을 주는 책을 찾기 어렵고 이런 점을 감안했을 때 좋은 개발서라는 옮긴이의 말로 책이 시작됩니다. 정말 그런지 한번 꼼꼼히 리뷰해보려고 합니다.




      이 책의 대상 독자는 어느정도 프로그래밍에 대한 경험이 있는 사람을 대상으로 합니다. 책에서는 if문에 대해서 설명하고 있지 않기 때문에 대학교를 졸업하는 시점, 프로그래밍 경력이 얼마되지 않았지만 존재하는 개발자를 대상으로 하고 있는 것 같습니다.








      책에서는 모든 장에 걸쳐 SOLID 원칙을 설명합니다.


      SOLID 원칙이란,


      S : 단일 책임 원칙(Single Responsibility Principle)


      O : 개방/폐쇄 원칙(Open/Closed Principle)


      L : 리스코프 치환 원칙(Liskov Substitution Principle)


      I : 인터페이스 분리 원칙(Interface Segregation Principle)


      D : 의존관계 역전 원칙(Dependency Inversion Principle)






      총 5개의 원칙의 앞글자를 따서 만든 원칙으로 소프트웨어 유지보수를 쉽게 도와주는 설계 원칙을 말합니다.




      2장에서는 SRP 원칙에 대해서 설명하고 있습니다. 기본적인 예제를 통해 상세한 설명을 하고 있으며, Junit을 통한 테스트에 대한 내용도 다루어주고 있어서 굉장히 알찬 책이 아닌가 라는 생각을 들게 했습니다. 




      3장은 OCP 원칙, 4장은 LSP 원칙 등 이렇게 차근차근 원칙에 대해서 설명하며 챕터를 진행하고 있습니다. 












      5장에는 TDD, 테스트 주도개발이라는 내용을 다루고 있습니다. 책에서는 모든 코드에 대해 테스트 코드를 통해 70~90%의 커버리지를 가져아 한다고 말합니다. 사실상 70~90%의 커버리지를 가지기도 어렵습니다. 개발 기간이 짧은 시점에서 테스트와 같이 개발을 하다보면 개발 일정에 무리를 주는 경우도 존재합니다. 가령 테스트 케이스가 존재 하지 않는 시점에서 본인이 개발한 부분에 대해서만 테스트 코드를 작성하려고 봤더니 배보다 배꼽이 더 큰 상황이 발생하기도 합니다. TDD의 경우 많은 커뮤니티에서 분쟁이 많습니다만, 제 생각에 TDD는 일하는 문화에 맞게, 팀과의 협의를 통해 진행하는 것이 가장 좋은 방법이라고 생각합니다. 테스트 주도 개발이 나쁘다는것이 아니라 테스트 주도 개발을 할 수 있는 상황이라면 정말 좋겠지만 이미 개발이 진행되고 있는 시점에서 테스트 커버리지를 올리면서 개발을 진행하기는 어려움이 있다는 점이라고 이해해주시면 될 것 같습니다.






      책 내에서 TDD도 같이 다루고 있는 부분에서 작은 책에 많은 내용을 담았구나 라는 생각을 하게 만들었습니다. 속이 꽉 차있는 책이라 읽는 내내 도움이 되는 내용들이 참 많았습니다.










      이 리뷰는 <한빛미디어>로부터 책을 제공받아 작성되었습니다.


    • 







       































      책소개



      4가지 프로젝트로 배우는 최신 자바 개발 기법으로 개발하는 방법을 설명해 최신의 자바 기법을 사용하고 적용하는 방법을 알려준다.



      입출금 내역 분석기, 문서관리 시스템, 비지니스 규칙 엔진, 트우터의 4가지 프로젝트를 직접 구현해 봄으로써 실무에 필요한 핵심 기술을 익힐 수 있다.



      어떤 기술을 선택해서 배우든 다양한 기술들을 서로 어떻게 연결해야 할지 처음에는 파악하기가 어렵다. 프로젝트를 진행하면서 어느 시점에 함수형 프로그래밍 개념을 적용해야 할지 언제 테스트를 고민해야 할까? 이런 기술을 언제 새로 추가하거나 개선해야 할지 어떻게 알 수 있을까? 각 기술을 다루는 책은 또 언제 읽을까, 해당하는 불로그나 동영상도 추가로 봐야 하나? 프로젝트를 진행하면서 이런 고민들을 하게 될것이다.



      이와 같은 고민도 저자도 하여 이 책을 집필했다고 하니 나와 같은 고민을 하는 개발자라면 꼭 한번 읽어봤으면 한다!


       



      각 장에는 소프트웨어 프로젝트가 포함되어 있다. 각 장을 따라가면 자연스럽게 그 프로젝트를 구현 할 수 있다. 처음에는 간단한 명령줄 배치 프로그램으로 시작하지만, 점점 형식을 갖춘 복잡한 응용프로그램을 구현해 볼 수 있다.


       



      1장 - 여행의 시작



      1장에서는 책에서 사용하는 개념과 원칙을 소개한다. 기술은 좁은 분야에 적용되지만 관습과 원칙은 모든 분야를 아우른다고 한다. 특정 기술을 다루는 책은 많이 있지만 이 책은 그런 책과 다르다고 한다. 직접 책에서 확인해 보자!


       



      2장 - 입출금 내역 분석기



      2장 부터는 좋은 소프트웨어 개발의 기반이 무엇인지 배운다. 먼저 한 개의 클래스로 문제를 구현해 보고, 프로젝트를 진행하면서 바뀌는 요구사항이나 유지보수에 대응하며 기존 구조의 한계가 무엇인지 직접 확인해 보자.


       



      3장 - 입출금 내역 분석기 확장판



      3장에서는 소프트웨어 개발 여정의 깊숙한 곳으로 탐험한다. 먼저 코드베이스에 유연성을 추가하고, 유지보수성을 개선하는 데 도움을 주는 개방/폐쇄 원칙을 배운다.


       



      4장 - 문서 관리 시스템



      4장에서는 다양한 소프트웨어 개발 원칙을 배운다. 문서 관리 기능 설계의 핵심은 상속 관계, 즉 어떻게 클래스를 상속하거나 인터페이스를 구현하는가에 달렸다. 문서 관리 기능을 제대로 설계할려면 컴퓨터 과학자 바버라 리스코프의 이름을 따라 만든 리스코프 치환 원칙을 알아야 한다.


       



      5장 - 비즈니스 규칙 엔진



      5장에서는 테스트 주도 개발 기법으로 새로운 설계 문제를 풀어나가는 방법을 배운다. 그리고 유닛테스트를 구현하는데 유용한 모킹 기법도 전반적으로 배운다.


       



      6장 - 트우터



      6장에서는 소프트웨어 응용프로그램을 한데 모아 큰 그림을 완성하는 방법을 배운다. 지금까지는 작은 예제(명령줄에서 실행할 만한 간단한 일괄 작업)를 살펴봤다. 6장에서 좀 더 상세하게 알아본다


       



      7장 - 트우터 확장판



      7 장은 앞선 6장에서 코어 비지니스 도메인 구현 방법뿐만 아니라 설계를 검증하는 테스트도 만들어 보았다. 7장에서는 의존관계 역전 원칙, 의존관계 주입으로 결합도 피하기, 저장소패턴, 쿼리 객체 패턴으로 데이터 영구 저장하기에 관한 방법을 구현해 본다.


       



      8장 - 결론



      마지막 8장에서는 프로그래밍 경력에 무엇을 더해야 할지, 기술을 발전시키고 개발자로서 경력을 한 단계 높이는 방법에 대해서 알아본다.


       



      이책은 막 대학을 졸업한 주니어 개발자라면 꼭 읽어봤으면 한다. 그리고 자바 개발자를 꿈구는 개발자도 읽어보면 반드시 도움이 될것이라 생각된다. 실무에서 사용되는 자바 개발 기법들을 미리 공부해봄으로써 실제 현업에 적용할 수 있으리라 본다.



      이 책의 장점이라 하면 프로젝트 주도 학습 덕분에 높은 집중력으로 즐겁게 배울 수 있다. 각 장에는 새프로젝트가 등장하므로 새로운 내용을 배울 수 잇을 것이다.


       























      




    •  


      실전 자바 소프트웨어 개발



      실제로 프로그램을 만들다 보면
      책에서 배웠던 '이상적인' 내용을 적용하기 어려운 경우가 많다.


       



      여기서 '이상적인' 이란 SOLID를 철저하하게 지키며
      결합도는 낮고 응집도는 높으며
      TDD와 DDD 방식으로 만들어진 제대로된 객체지향적인 코드를 말한다.


      하지만 절대 쉽지 않은 일이다.


       



      이 책에서는 이 쉽지 않은 작업을 어떻게 풀어 나가야 하는지
      몇 가지 샘플 프로젝트를 통해 가이드 해주고 있다.


      어려운 내용을 쉽게 설명해 주기 위해 다양한 예제 코드를 보여 주고 있고


      우리가 목표로 하는 '이상적인' 코드의 장단점에 대해서도 이야기 해주고 있다.


       


      타고난 천재가 아닌이상 이런 이상적인 코드를 처음부터 짜기란 불가능에 가깝다.



      따라서, 책의 저자가 이야기 한 것처럼
      최대한 많은 곳에 해당 내용을 적용해 보려고 노력하고
      잘 짜여진 수많은 코드를 보면서 공부 하는수 밖에 없다.


       


      잠깐 위에서 언급했었는데


      이상적인 코드를 구현 하는 방법에는 여러 가지 방법이 있고



      각각의 개발 방식에따라 장단점이 존재한다.
      예를 들어 책의 첫번째 예제에서 응집도에 대해 설명할때 이런 이야기가 나온다.
      응집도가 높으면 프로그램을 이해하기 쉬우나 너무 단순한 클래스가 많이 생성된다.
      또한 어느 정도 응집도를 유지하면 유지보수 하기 쉽고 관련 동작을 찾기 쉽다는 장점이 있지만
      불필요한 의존성과 SRP(단일 책임 원칙)을 위배할 가능성이 높아진다.
      그리고 응집도가 낮으면 기능을 추가하기 쉽지만, 기능을 추가하기 쉬운 만큼
      수많은 기능들을 추가했기 때문에 클래스의 책임이 모호해 진다는 것이다.
      따라서 개발을 할때는 여러 가지 상황을 고려하여 적절한 지점에서 타협점을 찾는 것이 바람직하다.
      이러한 것은 책에서는 배울 수 없다.


      수많은 코드를 접해보고 직접 사용해서 상황에 따라 적절하게 사용할 수 있는 능력을 기를 수 밖에 없다.


       


      아직 어떤 코드가 좋은 코드인지 잘 모르겠다면


      이런 종류의 책을 여러 번 읽어 보고 감을 잡으면 좋을것 같다.





    • [한줄평]



      최신 자바 개발 기법을 배우고싶다면 바로 이책 입니다.







      [목차구성]



      chapter 1 여행의 시작



      chapter 2 입출금 내역 분석기



      chapter 3 입출금 내역 분석기 확장판



      chapter 4 문서 관리 시스템



      chapter 5 비즈니스 규칙 엔진



      chapter 6 트우터



      chapter 7 트우터 확장판



      chapter 8 결론







      [이 책의 특징]



      ㆍ핵심 디자인 원칙을 배워 유지보수 가능한 코드 작성하기



      ㆍ유연성 높은 코드를 작성하고 예외 처리하기



      ㆍ결합도, 응집도, SOLID 원칙을 이해하고 코드에 적용하기



      ㆍ테스트 주도 개발로 새로운 설계 문제 해결하기



      ㆍ큰 그림부터 애플리케이션 도메인의 핵심까지 거꾸로 생각해보기



      ㆍ함수형 프로그래밍 개념을 이해하고 자바로 사용해보기







      [대상 독자]



      ㆍ막 대학을 졸업했거나 프로그래밍 경력이 조금 생기기 시작한 주니어 개발자



      ㆍC#, C++, 파이썬 등 다른 프로그래밍 언어를 사용하다가 자바를 사용하기 시작한 개발자



      ㆍ언어 자체를 빨리 배우도 싶거나 자바 코드를 구현하는데 중요한 원칙, 모범 사례, 관용 표현 등 다시 정리 하고 싶은 경력 개발자







      [장별 요약]



      1장 여행의 시작



      책에서 사용하는 개념과 원칙을 간단히 소개합니다.







      2장 입출금 내역 분석기



      사람들이 자신의 재정 상황을 더 잘 이해하도록 은행 계좌 내역을 분석하는 프로그램을 구현합니다. 이 과정에서 단일 책임 원칙, 결합도, 응집도 같은 핵심 객체지향 디자인 기법을 배웁니다.







      3장 입출금 내역 분석기 확장판



      2장에서 만든 코드에 전략 디자인 패턴, 개방/폐쇄 원칙으로 기능을 추가하고, 예외를 이용해 실패를 처리하는 방법을 배웁니다.







      4장 문서 관리 시스템



      잘나가는 의사가 환자 기록을 더 잘 관리하도록 돕습니다. 이 과정에서 소프트웨어 설계상의 상속, 리스코프 치환 원칙, 조합과 상속의 장단점을 소개합니다. 또한 자동화된 테스트 코드로 더 안정적인 소프트웨어를 개발하는 방법도 배웁니다.







      5장 비즈니스 규칙 엔진



      유연하고 유지보수하기 쉬운 핵심 비즈니스 규칙 엔진을 만드는 방법을 배웁니다. 테스트 주도 개발, 플루언트 API 개발, 인터페이스 분리 원칙을 알아봅니다.







      6장 트우터



      6~7장에서는 팔로워에게 짧은 메시지를 발송하는 기능을 제공하는 메시징 플랫폼 ‘트우터(Twootr)’를 만듭니다. 6장에서는 시스템 코어를 만들며, 주어진 요구 사항을 응용프로그램의 코어로 구현하는 방법을 배웁니다. 테스트 더블을 사용하는 방법을 익히고 코드베이스 내의 다양한 컴포넌트와 상호작용을 테스트합니다.







      7장 트우터 확장판



      6장에서 구현한 트우터를 확장합니다. 7장에서는 의존관계 역전 원칙을 설명하며, 이벤트 주도와 육각형 아키텍처(hexagonal architecture) 같은 전체적인 아키텍처를 선택하는 방법을 배웁니다. 테스트 자동화에 사용하는 스텁과 목 같은 테스트 더블을 설명하고, 함수형 프로그래밍 기법도 소개합니다.







      8장 결론



      이 책에서 소개한 주요 테마와 개념을 되짚어보며 참고할 만한 자료를 소개합니다.







      [서평]



      오랜 만에 실전 자바 서적이 나왔다. 자바 언어 기초 서적과 스프링등 프레임워크 위주의 기본서 개발서는 많지만 소프트웨어를 개발을 하려면 언어의 문법만 안다고 할수 있는것이 아니다. 소프트웨어 개발 기술을 익히려면 다양한 개념을 알아야 한다. 







      신입이든 경력자든 개발자라면 꼭 알아야 한다. 특히 신입 개발자라면 더 좋은 코드를 만들려고 SOLID 원칙, 디자인 패턴, 테스트 주도 개발, 함수형 프로그래밍 기술 등 신기술에 관심이 많을 것이다.



      하지만 기술을 계속 발전하고 새로운 신기술을 계속 나오고 있다. 어떤 기술을 선택해서 배워야 할지 처음 신입 개발자는 선택이 어렵다. 그 많은 시행 착오를 이책에서 어떻게 해결 할수 있는지 배울수 있다. 4가지 프로젝트를 진행하면 어느 시점에서 함수형 프로그래밍 개념을 적용하고, 언제 테스트를 하고, 또 새로운 기술을 추가하고 개선해야 할지 책에선 여러 기술을 프로젝트에 어떻게 적용할 수 있는지 배울수 있다.







      이책에서는 개발에 필요한 실무에서 사용하는 최신 자바 기법을 소개하고 있어 많은 도움이 될것이라 생각한다.






  • 내용이 없습니다.
  • 내용이 없습니다.
닫기

해당 상품을 장바구니에 담았습니다.
장바구니로 이동하시겠습니까?