본문 바로가기

추천 검색어

실시간 인기 검색어

소프트웨어의 품격

자바로 살펴보는 좋은 소프트웨어 개발
마르코 파엘라 저자(글) · 최광민 번역
에이콘출판 · 2021년 09월 24일 출시
10.0 (1개의 리뷰)
최고예요 (100%의 구매자)
  • 소프트웨어의 품격 대표 이미지
    소프트웨어의 품격 대표 이미지
  • A4
    사이즈 비교
    210x297
    188x234
    단위 : mm
MD의 선택 무료배송 사은품 이벤트 소득공제
10% 31,500 35,000
적립/혜택
1,750P

기본적립

5% 적립 1,750P

추가적립

  • 5만원 이상 구매 시 추가 2,000P
  • 3만원 이상 구매 시, 등급별 2~4% 추가 최대 1,750P
  • 리뷰 작성 시, e교환권 추가 최대 300원
배송안내
무료배송 적용상품
배송비 안내
국내도서 / 외국도서
도서만 1만 원 이상 구매 시 무료배송
도서 + 잡지 / 만화 / :K컬렉션을 함께 1만 원 이상 구매 시 무료배송

1만원 미만 시 2,000원 배송비 부과

잡지 / 만화 / :K컬렉션 (교보배송)
각각 구매하거나 함께 2만 원 이상 구매 시 무료배송

2만원 미만 시 2,000원 배송비 부과

해외주문 서양도서 / 해외주문 일본도서 (교보배송)
각각 구매하거나 함께 1만 원 이상 구매 시 무료배송

1만원 미만 시 2,000원 배송비 부과

업체배송 상품 (전집, GIFT, 음반 / DVD 등)
중고장터 상품
해당 상품 상세페이지 "배송비" 참고 (업체 별/판매자 별 무료배송 기준 다름)
바로드림 오늘배송
업체에서 별도 배송하여 1Box당 배송비 2,500원 부과

1Box 기준 : 도서 10권

그 외 무료배송 기준
바로드림, eBook 상품을 주문한 경우, 플래티넘/골드/실버회원 무료배송쿠폰 이용하여 주문한 경우, 무료배송 등록 상품을 주문한 경우
주문정보를 불러오는 중입니다.
서울시 종로구 종로 1

알림 신청하시면 원하시는 정보를
받아 보실 수 있습니다.

해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.

패키지

북카드

키워드 Pick

키워드 Pick 안내

관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.

프로그래밍 언어의 기본을 익힌 독자를 대상으로 하는 책으로, 소프트웨어의 품질을 결정짓는 여러 가지 기준과 그 기준에 부합하는 소프트웨어를 개발하는 방법을 예제 바탕으로 설명한다. 더 나아가, 품질 기준 사이에 필연적인 충돌이 있음을 이해하고, 이러한 기회비용을 어떻게 다뤄야 할지 생각해볼 기회를 제공한다.

작가정보

저자(글) 마르코 파엘라

Marco Faella
이탈리아 네이플스 페데리코 II 대학 조교수로 재임 중이다. 그의 연구 분야는 컴퓨터과학이지만 열정적인 강사이자 프로그래머이기도 하다. 지난 13년 동안 고급 프로그래밍 강의를 해왔고 자바 자격증 참고서를 출간했으며 자바 스트림 영상 강의도 만들었다.

번역 최광민

한양대를 졸업하고 삼성SDS 연구소 책임연구원을 거쳐 인공지능 스타트업 알레시오에서 뱃속 아기 얼굴을 보여주는 서비스인 베이비 페이스를 연구·개발하는 CTO로 재직 중이다. 새로운 기술을 배우고 익히는 것을 좋아하며 기술을 바탕으로 좋은 가치를 전달하는 것을 목표로 삼고 있다.

작가의 말

처음에 내가 정한 책 제목은 ‘자바: 스타일 익히기’였다. 매닝의 현명한 직원들이 내게 눈길을 끄는 제목으로 바꾸자고 충고한 후 서문에라도 원래 제목의 의미를 설명하고 싶었다. 스타일 익히기의 전형적인 예로 프랑스 작가 레이먼드 큐뉴는 같은 이야기를 99가지 다른 방법으로 표현했다. 그 책의 요점은 의도적으로 평이하게 만들어진 이야기가 아니라 자연어의 무한한 표현력을 자유롭게 탐험하는 데 있다. 도널드 커누스 같은 저명인들이 문학과 프로그래밍의 간격을 좁히려고 했지만 프로그래밍은 문학이 아니다. 초보 프로그래머라면 프로그래밍 과제를 해결하는 최고의 방법이 수학에서 그렇듯 오직 한 가지라고 믿더라도 용서받을 수 있다. 하지만 오늘날 행해지는 실제 프로그래밍은 수학보다 문학에 훨씬 가깝다. 전례 없던 수준으로 추상적인 구성 요소를 포함할 수 있게 프로그래밍이 진화했고, 목적을 이루는 방법 역시 늘었다. 새로운 언어는 소개된 후에도 진화하는 과정 중 한 가지 일을 해내는 다른 방법이 추가되곤 한다. 자바처럼 가장 많이 쓰이는 언어도 나름의 위치를 차지한 새로운 언어를 견제하고자 빠른 속도로 진화한다. 이 책에서는 어떠한 프로그래밍 작업에서든 고려해야 할 사항과 그 해답의 맛을 보여주고자 한다. 제시된 예제는 매우 평이하다. 수조를 나타내는 클래스를 다룰 텐데 수조를 파이프로 연결하거나 그 안에 액체를 채울 수 있다. 클라이언트는 물을 넣고 빼거나 새로운 파이프를 연결하는 방식으로 지속적인 상호작용을 한다. 이 일을 수행하는 18가지 다른 방법을 제시하고 토론하면서 성능과 코드의 명료성, 여러 가지 다른 측면에서의 소프트웨어 품질을 최대화한다. 이 책은 무미건조한 코드 조각의 나열이 아니다. 흐름에 따라 컴퓨터과학(여러 가지 자료 구조와 복잡도 이론, 분할 상환 복잡도)과 자바 프로그래밍(스레드 동기화와 자바 메모리 모델), 소프트웨어 공학(규약에 따른 설계 방법론과 테스팅 기법)의 특화된 주제를 다룰 것이다. 간단한 사례더라도 깊이 파고들면 더 나은 코드를 작성하는 데 도움을 주는 방대한 주제와 연관 있다는 것을 보여주는 것이 이 책의 목적이다.

목차

  • 1부. 먼저 알아야 할 것들

    1장. 소프트웨어 품질과 앞으로 풀어야 할 문제
    1.1 소프트웨어 품질
    1.1.1 내적 품질과 외적 품질
    1.1.2 기능적 품질과 비기능적 품질
    1.2 외적 소프트웨어 품질에 가까운 기준들
    1.2.1 정확성
    1.2.2 견고성
    1.2.3 사용성
    1.2.4 효율성
    1.3 내적 소프트웨어 품질에 가까운 기준들
    1.3.1 가독성
    1.3.3 테스트 용이성
    1.3.4 유지보수성
    1.4 소프트웨어 품질 기준 사이의 상호작용
    1.5 특수한 품질
    1.5.1 스레드 안전성
    1.5.2 간결성
    1.6 앞으로 살펴볼 예제: 수조 시스템
    1.6.1 API
    1.6.2 활용 사례
    1.7 데이터 모델과 데이터 표현
    1.7.1 물의 양 저장하기
    1.7.2 연결 상태 저장하기
    1.8 Hello containers! [Novice]
    1.8.1 필드와 생성자
    1.8.2 getAmount와 addWater 메서드
    1.8.3 connectTo 메서드
    요약
    더 읽을거리

    2장. 레퍼런스 구현
    2.1 레퍼런스 코드 [Reference]
    2.1.1 메모리 레이아웃 다이어그램
    2.1.2 메서드
    2.2 메모리 요구 사항
    2.2.1 Reference의 메모리 요구량
    2.3 시간 복잡도
    2.3.1 Reference의 시간 복잡도
    2.4 배운 내용 연습하기
    요약
    퀴즈와 연습 문제 정답
    더 읽을거리


    2부. 소프트웨어 품질

    3장. 질주 본능: 시간 효율성
    3.1 상수 시간에 물 넣기 [Speed1]
    3.1.1 시간 복잡도
    3.2 상수 시간에 연결 추가하기 [Speed2]
    3.2.1 순환 리스트로 그룹 표현하기
    3.3.2 갱신 지연
    3.3 최적의 균형: 합집합 찾기 알고리즘 [Speed3]
    3.3.1 그룹 대표 찾기
    3.3.2 수조의 트리 연결하기
    3.3.3 최악의 경우의 시간 복잡도
    3.3.4 분할상환 시간 복잡도
    3.3.5 크기가 변하는 배열을 이용할 경우의 분할상환 분석
    3.4 구현 방식 비교하기
    3.4.1 실험
    3.4.2 이론 대 실제
    3.5 전혀 새로운 문제에 적용해보기
    3.5.1 빠른 삽입
    3.5.2 빠른 조회
    3.5.3 모든 것을 빠르게
    3.6 실제 사례
    3.7 배운 내용 적용해보기
    요약
    퀴즈와 연습문제 해답
    더 읽을거리

    4장. 소중한 메모리: 공간 효율성
    4.1 검소한 버전 [Memory1]
    4.1.1 공간 및 시간 복잡도
    4.2 일반 배열 [Memory2]
    4.2.1 공간 및 시간 복잡도
    4.3 객체여, 안녕 [Memory3]
    4.3.1 객체를 사용하지 않는 API
    4.3.2 필드와 getAmount 메서드
    4.3.3 팩토리 메서드로 수조 생성하기
    4.3.4 ID로 수조 연결하기
    4.3.5 공간 및 시간 복잡도
    4.4 블랙홀 [Memory4]
    4.4.1 공간 및 시간 복잡도
    4.5 공간 - 시간 기회비용
    4.6 전혀 새로운 문제에 적용해보기
    4.6.1 중복이 적을 때
    4.6.2 중복이 많을 때
    4.7 실제 사례
    4.8 배운 내용 적용해보기
    요약
    퀴즈와 연습문제 해답
    더 읽을거리


    5장. 모니터링을 이용한 신뢰성 향상
    5.1 계약에 의한 설계
    5.1.1 사전 조건과 사후 조건
    5.1.2 불변 조건
    5.1.3 정확성과 견고성
    5.1.4 계약 검사
    5.1.5 더 큰 그림
    5.2 계약을 바탕으로 수조 설계하기
    5.3 계약을 검사하는 수조 [Contracts]
    5.3.1 addWater의 계약 검사하기
    5.3.2 connectTo의 계약 검사하기
    5.4 불변 조건을 검사하는 수조 [Invariants]
    5.4.1 connectTo에서 불변 조건 검사하기
    5.4.2 addWater 불변 조건 검사
    5.5 전혀 새로운 문제에 적용해보기
    5.5.1 계약
    5.5.2 기본 구현
    5.5.3 계약 검사
    5.5.4 불변 조건 검사
    5.6 실제 사례
    5.7 배운 내용 적용해보기
    요약
    퀴즈와 연습문제 해답
    더 읽을거리

    6장. 나를 속여봐: 테스트를 이용한 신뢰성 향상
    6.1 테스트의 기본적 개념
    6.1.1 테스트 커버리지
    6.1.2 테스트와 계약에 의한 설계
    6.1.3 JUnit
    6.2 수조 테스트하기 [UnitTests]
    6.2.1 테스트 초기화하기
    6.2.2 addWater 테스트하기
    6.2.3 connectTo 테스트하기
    6.2.4 테스트 수행
    6.2.5 커버리지 측정
    6.3 테스트 용이성 [Testable]
    6.3.1 제어 가능성
    6.3.2 관측 가능성
    6.3.3 고립하기: 의존성 제공
    6.4 전혀 새로운 문제에 적용해보기
    6.4.1 테스트 용이성 개선
    6.4.2 테스트 슈트
    6.5 실제 사례
    6.6 배운 내용 적용해보기
    요약
    퀴즈와 연습문제 해답
    더 읽을거리


    7장. 큰소리로 코딩하자: 가독성
    7.1 가독성을 바라보는 관점
    7.1.1 기업 코딩 스타일 가이드
    7.1.2 가독성의 재료
    7.2 구조적 가독성 특징
    7.2.1 제어 흐름 구문
    7.2.2 표현식과 지역 변수
    7.3 외부적 가독성 특징
    7.3.1 주석
    7.3.2 이름 짓기
    7.3.3 공백과 들여쓰기
    7.4 가독성 높은 수조 [Readable]
    7.4.1 자바독을 이용한 클래스 헤더 문서화
    7.4.2 connectTo 정리하기
    7.4.3 addWater 정리하기
    7.5 가독성에 대한 마지막 고찰
    7.6 전혀 새로운 문제에 적용해보기
    7.7 실제 사례
    7.8 배운 내용 적용해보기
    요약
    퀴즈와 연습문제 해답
    더 읽을거리


    8장. 스레드 안전성
    8.1 스레드 안전성 달성의 어려움
    8.1.1 동시성 레벨
    8.1.2 수조 시스템의 동시성 정책
    8.2 교착 상태 다루기
    8.2.1 원자적 락 시퀀스
    8.2.2 순서 있는 락 시퀀스
    8.2.3 숨은 경합 조건
    8.3 스레드 안전한 수조 [ThreadSafe]
    8.3.1 connectTo 동기화
    8.3.2 addWater와 getAmount 동기화
    8.4 불변성 [Immutable]
    8.4.1 API
    8.4.2 구현
    8.5 전혀 새로운 문제에 적용해보기
    8.6 실제 사례
    8.7 배운 내용 적용해보기
    요약
    퀴즈와 연습문제 해답
    더 읽을거리


    9장. 재활용합시다: 재사용성
    9.1 경계 찾기
    9.2 일반적인 프레임워크
    9.2.1 속성 관리 API
    9.2.2 가변 컬렉터
    9.2.3 함수형 인터페이스를 컨테이너 속성에 적용하기
    9.3 제네릭 컨테이너 구현
    9.4 일반적인 고려사항
    9.5 수조의 기능 재현하기 [Generic]
    9.5.1 수정된 시나리오
    9.5.2 구체적인 속성 설계
    9.5.3 구체적인 수조 클래스 정의
    9.6 소셜 네트워크 포스트
    9.7 전혀 새로운 문제에 적용해보기
    9.7.1 파라미터화된 함수를 표현하는 인터페이스
    9.7.2 통신 방식 개선
    9.8 실제 사례
    9.9 배운 내용 적용해보기
    요약
    퀴즈와 연습문제 해답
    더 읽을거리

    부록 A. 코드 골프: 간결성
    부록 B. 궁극의 수조 클래스

추천사

출판사 서평

◈ 추천의 글 ◈

지난 30년 동안 프로그래밍 서적 몇 권을 저술한 덕분에 책을 쓰는 일에 관한 조언을 요청받곤 한다. 그때마다 우선 한 장(chapter)을 완성해 보여달라고 요청하는데 대부분 그 후로 소식이 없다. 한 장도 쓰지 못한다면 책 한 권은 완성될 수 없고 더 이상 할 얘기도 없기 마련이다.
2018년 2월 네이플대 마르코 파엘라 교수로부터 이메일을 받았다. 그가 캘리포니아대에서 일하던 시절 만난 적이 있었다. 그는 책 저술에 대한 조언을 구했는데 이미 몇 장이 완성된 상태였다! 살펴본 내용이 마음에 들어 몇 가지 조언과 격려를 담아 답장을 보냈다. 그 후 한동안 연락이 없었지만 놀랍지는 않았다. 알고 지내던 한 편집자가 말했듯이 저술을 시작하는 사람은 매우 많지만 저술을 끝마치는 사람은 드물기 때문이다.
2019년 4월 매닝출판사로부터 그의 책이 출간된다는 이메일을 받았는데 정말 훌륭한 책이었다. 8월에는 그가 내게 머리말을 부탁해 흔쾌히 승낙했다. (코어 자바 같은 고전적인)
프로그래밍 언어 관련 책을 쓸 때는 언어의 구성 요소와 특화된 API에 집중한다. 그리고 독자가 자료 구조와 알고리즘, (테스팅과 리팩토링, 디자인 패턴을 비롯한) 소프트웨어 공학 이론을 한 번쯤 접했다고 가정한다. 하지만 교수가 된 후 대학 교육 과정이 이러한 주제를 실용적이고 쉽게 가르치지 못한다는 사실을 깨달았다.
이 책은 그러한 부족함을 채워준다. 자바 프로그래밍의 기본에만 익숙하다면 저자가 고품질 프로그램을 향한 길을 제시할 것이다. 여러분이 알고리즘 설계, API 설계, 테스팅, 동시성에 경험이 있을 수 있지만 저자는 고전적인 주제에 새로운 관점을 제시한다.
저자는 한 예제를 다른 방식으로 계속 구현하면서 엄청나게 많은 통찰을 끌어낸다. 나는 이렇게 ‘실제로 돌아가는 예제’를 가지고 설명하는 방식을 좋아하지 않는다. 예제 프로그램이 진화하는 과정을 파악하기 위해 책을 꼭 순서대로 읽어야 하기 때문이다. 하지만 이 책의 예제는 영리하게 설계됐다. 놀랍고 흥미로운 핵심 개념 몇 가지를 첫눈에 이해한 후 각 장에서 독립적인 방향으로 코드를 발전시킨 나간다. 이는 놀라운 경험이 될 것이다.
중요한 내용을 다루는 장을 읽은 후 ‘이전과 완전하게 다른 뭔가’를 발견할 것이다. 그랬다면 새로운 기술을 다른 상황에 적용할 차례다. 본문 중간의 퀴즈와 각 장 끝부분의 연습문제를 꼭 풀어보길 바란다.
고품질 소프트웨어를 만드는 일은 결코 간단하지 않다. 하지만 훌륭한 설계 이론과 장인 정신을 다시 되새기는 것은 항상 도움을 준다. 내가 그랬듯이 여러분도 이 책에서 제시하는 신선한 관점을 즐겨보길 바란다.
- 케이 호스트만(Cay Horstmann),
초보와 숙련된 프로그래머를 위한 수많은 책(『Core Java』 시리즈, 『Modern JavaScript for the Impatient』 등)의 저자

◈ 이 책에서 다루는 내용 ◈

◆ 소프트웨어 품질 평가
◆ 소프트웨어 품질 기준의 기회 비용과 상호작용
◆ 한 가지 예제를 바탕으로 다양한 목표 달성
◆ 어떠한 객체지향 언어에도 적용할 수 있는 자바 기반 예제


◈ 이 책의 목표와 대상 독자 ◈

공식적인 교육을 받지 못한 주니어 개발자가 소프트웨어 개발의 시야를 넓히는 시작점으로 적합하다.
◆ 공식적인 교육이 부족하거나 컴퓨터과학, 컴퓨터공학 외의 다른 분야를 전공한 현업 개발자는 이 책을 통해 컴퓨터과학과 컴퓨터공학의 기법을 훑어보고 실제 프로그래밍 과업에서 근본적으로 상충하는 가치를 살펴볼 수 있다.
◆ 컴퓨터과학과 컴퓨터공학 전공생에게는 별도 강의에서 배운 다양한 주제를 통합하는 사례를 제공한다. 프로그래밍과 소프트웨어 공학 교과서의 보충 교재로 사용할 수 있다.


◈ 이 책의 구성 ◈

각 장에서 어떠한 관점의 코드 품질을 다루는지 다음과 같이 요약했다. 각 장 끝부분의 연습문제를 그냥 지나치지 말자. 상세한 해답을 제공하며 해당 장에서 다룬 기법을 다른 상황에 적용해 핵심 개념을 완성해 나갈 수 있다.
1장에서는 프로그래밍 예제(수조 클래스)를 설명하고 경험이 부족한 프로그래머에게 나쁜 영향을 미치는 일반적인 오해를 보여주는 사례를 살펴본다.
2장에서는 여러 가지 관점에서 균형 잡힌 품질을 제공하는 레퍼런스 구현을 자세하게 살펴본다.
3장에서는 시간 효율성에 초점을 맞춰 레퍼런스 실행 시간을 수백 배(500배) 줄여본다. 상황에 따라 여러 가지 성능 기준 사이에 충돌이 발생하는 것을 설명한다.
4장에서는 공간(메모리) 효율성을 실험한다. 객체를 이용해 레퍼런스 대비 50%의 메모리 사용량을 절감한다. 그리고 수조를 표현하는 데 ‘객체’를 사용하지 않음으로써 90%의 메모리를 절감한다.
5장에서는 모니터링을 기반으로 신뢰성을 보장하기 위해 규약에 따른 설계방법론을 소개하고 메서드 규약과 클래스 불변 조건에 기반한 런타임 체크와 어서션을 이용해 레퍼런스를
견고하게 만드는 방법을 살펴본다.
6장에서는 단위 테스트로 신뢰성을 향상한다. 코드 커버리지 측정을 비롯한 각종 도구를 이용해 클래스의 테스트 슈트를 설계하고 실행하는 기법을 알아본다.
7장에서는 가독성을 다룬다. 명료한 자기설명적 코드의 모범 사례를 따라 레퍼런스를 리팩토링한다.
8장에서는 동시성과 스레드 안전성을 살펴본다. 스레드 동기화와 관련 있는 기본적인 개념을 되새겨보고 예제를 바탕으로 교착 상태와 경합 조건을 피하는 데 복잡한 기법이 필요하다는 것을 확인한다.
9장에서는 재사용성에 집중한다. 유사한 구조를 지닌 다른 문제에 레퍼런스 클래스를 활용할 수 있게 제네릭을 이용한 일반화를 실습한다.
부록 A에서는 간결함을 주제로, 레퍼런스 코드 길이의 15% 정도로 짧은 구현 방식을 살펴본다.
부록 B에서는 가장 중요한 소프트웨어 품질 기준을 통합해 궁극의 수조 클래스를 작성한다.

◈ 옮긴이의 말 ◈

초등학교 시절 부모님을 조르고 졸라 다녔던 컴퓨터학원에서 GW-BASIC으로 검은색 바탕에 회색 텍스트로 ASCII 아트를 그리며 놀던 기억이 난다. 지금 생각하면 별것 아니지만 당시는 그게 정말 재미있고 자못 자랑스러웠다. 그때는 그게 왜 그리도 재미있었을까? 아마도 아무 제약이 없었기 때문이 아닐까? 재촉하는 영업 부서도, 결제가 안 된다며 불만을 토로하는 고객도, 예산을 꼬치꼬치 캐묻는 관리 부서도 없고, 그저 그리고 싶은 대로 화면에 그리면 그만이었다.
그 후 대기업과 스타트업이라는 극단적인 환경에서 소프트웨어를 개발하면서 뼈저리게 느낀 점은 소프트웨어를 개발하는 일에는 항상 제약이 따른다는 것이다. 소프트웨어는 정신적 노동의 결과물인 동시에 돈을 받고 팔려야 하는 ‘상품’이기 때문이다. 즉 소프트웨어 개발은 근본적으로 비즈니스라는 문맥을 벗어나 생각할 수 없기 때문에 항상 시간과 예산, 인력 등의 비용 제약을 수반한다.
소프트웨어 엔지니어로서 항상 겪는 갈등도 여기서 비롯된다. 모든 면에서 완벽한 소프트웨어를 만들고 싶은 욕심과 주어진 비용 안에서 과업을 완수해야 하는 제약 사이에 충돌이 발생한다. 결국 인생의 많은 측면이 그렇듯 소프트웨어 개발에도 완성도와 제약 사이의 적절한 균형이 필요하다. 무엇을 취하고 무엇을 버릴지, 무엇을 먼저 하고 무엇을 미뤄야 할지 끝없는 선택의 연속이다. 한마디로 기회비용을 항상 고려해야만 한다.
이 책의 중요한 주제 중 하나가 바로 기회비용이다. 저자는 소프트웨어의 품질을 결정하는 여러 기준을 소개하고 동일한 소프트웨어를 여러 측면에서 최적화하는 방법을 탁월하게 설명한다. 그리고 그 과정에서 각 기준 사이에 불가피한 기회비용이 있는 것을 보여준다.
프로그래밍 언어의 기본적인 내용을 익힌 개발자라면 이 책에서 크게 2가지를 얻을 수 있다. 첫째, 소프트웨어의 품질을 결정하는 여러 기준을 이해하고 그 기준에 부합하는 소프트웨어를 개발하는 방법을 살펴볼 수는 있다. 물론 책 한 권 읽는 것만으로는 고품질의 소프트웨어를 작성할 수 없지만 이 책을 좋은 출발점으로 삼을 수 있을 것이다.
둘째, 여러 품질 기준 사이에 필연적인 충돌이 있다는 것을 이해하고 이러한 기회비용을 어떻게 다룰지 생각할 기회를 얻는 것이다. 물론 책 내용만으로 현실에서 발생하는 모든 충돌을 이해할 수는 없다. 현실의 소프트웨어 개발은 품질 기준뿐만 아니라 사업적, 조직적 요소까지 영향을 미치므로 훨씬 복잡하다. 그래도 이상적인 생각만으로 전쟁터에 뛰어들기보다 마음의 준비를 단단히 하고 뛰어드는 것이 나을 것이다.
인생이 그렇듯 훌륭한 개발자, 엔지니어의 길도 순탄치만은 않다. 가보지 않은 길에 어떠한 괴물이 도사리고 있을지 알 수 없다. 그저 배우고 성장하며 묵묵히 걸어갈 뿐이다. 부디 여러분의 앞길에 이 책이 작은 이정표가 되기를 바란다.

기본정보

상품정보
ISBN 9791161755618 ( 1161755616 )
쪽수 404쪽
크기
188 * 234 * 24 mm / 747 g
총권수 1권
원서명/저자명 Seriously Good Software/Faella, Marco

Klover

Klover 리뷰 안내
교보를 애용해 주시는 고객님들이 남겨주신 평점과 감상을 바탕으로, 다양한 정보를 전달하는 교보문고의 리뷰 서비스입니다.
리워드 안내
구매 후 90일 이내에 평점과 10자 이상의 리뷰 작성 시 e교환권 200원을 적립해 드립니다.
e교환권은 적립 일로부터 180일 동안 사용 가능합니다.
리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 리뷰 종류별로 구매한 아이디당 한 상품에 최초 1회 작성 건들에 대해서만 제공됩니다.
한달 후 리뷰
구매 후 30일~ 120일 이내에 작성된 두 번째 구매리뷰에 대해 한 달 후 리뷰로 인지하고 e교환권 100원을 추가 제공합니다.
운영 원칙 안내
Klover 리뷰를 통한 리뷰를 작성해 주셔서 감사합니다. 자유로운 의사 표현의 공간인 만큼 타인에 대한 배려를 부탁합니다.
일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
  • 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
  • 도서와 무관한 내용의 리뷰
  • 인신공격이나 욕설, 비속어, 혐오발언이 개재된 리뷰
  • 의성어나 의태어 등 내용의 의미가 없는 리뷰
신고하기
다른 고객이 작성리뷰에 대해 불쾌함을 느끼는 경우 신고를 할 수 있으며, 신고 자가 일정수준 이상 누적되면 작성하신 리뷰가 노출되지 않을 수 있습니다.

구매 후 리뷰 작성 시, e교환권 200원 적립

문장수집

문장수집 안내
문장수집은 고객님들이 직접 선정한 책의 좋은 문장을 보여주는 교보문고의 새로운 서비스입니다. 마음을 두드린 문장들을 기록하고 좋은 글귀들은 "좋아요“ 하여 모아보세요. 도서 문장과 무관한 내용 등록 시 별도 통보 없이 삭제될 수 있습니다.
리워드 안내
구매 후 90일 이내에 문장수집 작성 시 e교환권 100원을 적립해드립니다.
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.

구매 후 리뷰 작성 시, e교환권 100원 적립

이 책의 첫 기록을 남겨주세요

교환/반품/품절 안내

상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)

이벤트
TOP

저자 모두보기

저자(글)

번역

매장별 재고 및 위치

할인쿠폰 다운로드

  • 쿠폰은 주문결제화면에서 사용 가능합니다.
  • 다운로드한 쿠폰은 마이 > 혜택/포인트 에서 확인 가능합니다.
  • 도서정가제 적용 대상 상품에 대해서는 정가의 10%까지 쿠폰 할인이 가능합니다.
  • 도서정가제 적용 대상 상품에 10% 할인이 되었다면, 해당 상품에는 사용하실 수
    없습니다.

적립예정포인트 안내

  • 통합포인트 안내

    • 통합포인트는 교보문고(인터넷, 매장), 핫트랙스(인터넷, 매장), 모바일 교보문고 등 다양한 곳에서 사용하실 수 있습니다.
    • 상품 주문 시, 해당 상품의 적립률에 따라 적립 예정 포인트가 자동 합산되고 주문하신 상품이 발송완료 된 후에 자동으로 적립됩니다.
    • 단, 쿠폰 및 마일리지, 통합포인트, e교환권 사용 시 적립 예정 통합포인트가 변동될 수 있으며 주문취소나 반품시에는 적립된 통합포인트가 다시 차감됩니다.
  • 통합포인트 적립 안내

    • 통합포인트는 도서정가제 범위 내에서 적용됩니다.
    • 추가적립 및 회원 혜택은 도서정가제 대상상품(국내도서, eBook등)으로만 주문시는 해당되지 않습니다.
  • 기본적립) 상품별 적립금액

    • 온라인교보문고에서 상품 구매시 상품의 적립률에 따라 적립됩니다.
    • 단 도서정가제 적용 대상인 국내도서,eBook은 15%내에서 할인율을 제외한 금액내로 적립됩니다.
  • 추가적립) 5만원 이상 구매시 통합포인트 2천원 추가적립

    • 5만원 이상 구매시 통합포인트 2천원 적립됩니다.
    • 도서정가제 예외상품(외서,음반,DVD,잡지(일부),기프트) 2천원 이상 포함시 적립 가능합니다.
    • 주문하신 상품이 전체 품절인 경우 적립되지 않습니다.
  • 회원혜택) 3만원이상 구매시 회원등급별 2~4% 추가적립

    • 회원등급이 플래티넘, 골드, 실버 등급의 경우 추가적립 됩니다.
    • 추가적립은 실결제액 기준(쿠폰 및 마일리지, 통합포인트, e교환권 사용액 제외) 3만원 이상일 경우 적립됩니다.
    • 주문 후 취소,반품분의 통합포인트는 단품별로 회수되며, 반품으로 인해 결제잔액이 3만원 미만으로 변경될 경우 추가 통합포인트는 전액 회수될 수 있습니다.

제휴 포인트 안내

제휴 포인트 사용

  • OK CASHBAG 10원 단위사용 (사용금액 제한없음)
  • GS&POINT 최대 10만 원 사용
더보기

구매방법 별 배송안내

배송 일정 안내

  • 출고 예정일은 주문상품의 결제(입금)가 확인되는 날 기준으로 상품을 준비하여 상품 포장 후 교보문고 물류센터에서 택배사로 전달하게 되는 예상 일자입니다.
  • 도착 예정일은 출고 예정일에서 택배사의 배송일 (약1~2일)이 더해진 날이며 연휴 및 토, 일, 공휴일을 제외한 근무일 기준입니다.
배송 일정 안내
출고예정일 도착예정일
1일이내 상품주문 후 2~3일 이내
2일이내 상품주문 후 3~4일 이내
3일이내 상품주문 후 4~5일 이내
4일이내 상품주문 후 5~6일 이내

연휴 및 토, 일, 공휴일은 제외됩니다.

당일배송 유의사항

  • 수도권 외 지역에서 선물포장하기 또는 사은품을 포함하여 주문할 경우 당일배송 불가
  • 회사에서 수령할 경우 당일배송 불가 (퇴근시간 이후 도착 또는 익일 배송 될 수 있음)
  • 무통장입금 주문 후 당일 배송 가능 시간 이후 입금된 경우 당일 배송 불가
  • 주문 후 배송지 변경 시 변경된 배송지에 따라 익일 배송될 수 있습니다.
  • 수도권 외 지역의 경우 효율적인 배송을 위해 각 지역 매장에서 택배를 발송하므로, 주문 시의 부록과 상이할 수 있습니다.
  • 각 지역 매장에서 재고 부족 시 재고 확보를 위해 당일 배송이 불가할 수 있습니다.

일반배송 시 유의사항

  • 날씨나 택배사의 사정에 따라 배송이 지연될 수 있습니다.
  • 수도권 외 지역 바로배송 서비스의 경우 경품 수령 선택 여부에 따라 도착 예정일이 변경됩니다.
  • 출고 예정일이 5일 이상인 상품의 경우(결제일로부터 7일 동안 미입고), 출판사 / 유통사 사정으로 품/절판 되어 구입이 어려울 수 있습니다. 이 경우 SMS, 메일로 알려드립니다.
  • 선물포장 주문 시 합배송 처리되며, 일부상품 품절 시 도착 예정일이 늦어질 수 있습니다.
  • 분철상품 주문 시 분철 작업으로 인해 기존 도착 예정일에 2일 정도 추가되며, 당일 배송, 해외 배송이 불가합니다.

해외주문 시 유의사항

  • 해외주문도서는 해외 거래처 사정에 의해 품절/지연될 수 있습니다.

Special order 주문 시 유의사항

  • 스페셜오더 도서나 일서 해외 주문 도서와 함께 주문 시 배송일이 이에 맞추어 지연되오니, 이점 유의해 주시기 바랍니다.

바로드림존에서 받기

  1. STEP 01
    매장 선택 후 바로드림 주문
  2. STEP 02
    준비완료 알림 시 매장 방문하기
  3. STEP 03
    바로드림존에서 주문상품 받기
  • 바로드림은 전국 교보문고 매장 및 교내서점에서 이용 가능합니다.
  • 잡지 및 일부 도서는 바로드림 이용이 불가합니다.
  • 각 매장 운영시간에 따라 바로드림 이용 시간이 달라질 수 있습니다.

수령 안내

  • 안내되는 재고수량은 서비스 운영 목적에 따라 상이할 수 있으므로 해당 매장에 문의해주시기 바랍니다.
  • 바로드림 주문 후 재고가 실시간 변동되어, 수령 예상 시간에 수령이 어려울 수 있습니다.

취소/교환/반품 안내

  • 주문 후 7일간 찾아가지 않으시면, 자동으로 결제가 취소됩니다.
  • 취소된 금액은 결제수단의 승인취소 및 예치금으로 전환됩니다.
  • 교환/반품은 수령하신 매장에서만 가능합니다.

사은품 관련 안내

  • 바로드림 서비스는 일부 1+1 도서, 경품, 사은품 등이 포함 되지 않습니다.

음반/DVD 바로드림시 유의사항

  • 음반/DVD 상품은 바로드림 주문 후 수령점 변경이 불가합니다. 주문 전 수령점을 꼭 확인해 주세요.
  • 사은품(포스터,엽서 등)은 증정되지 않습니다.
  • 커버이미지 랜덤발매 음반은 버전 선택이 불가합니다.
  • 광화문점,강남점,대구점,영등포점,잠실점은 [직접 찾아 바로드림존 가기], [바로드림존에서 받기] 로 주문시 음반 코너에서 수령확인이 가능합니다
  • 선물 받는 분의 휴대폰번호만 입력하신 후 결제하시면 받는 분 휴대폰으로 선물번호가 전달됩니다.
  • 문자를 받은 분께서는 마이 > 주문관리 > 모바일 선물내역 화면에서 선물번호와 배송지 정보를 입력하시면 선물주문이 완료되어 상품준비 및 배송이 진행됩니다.
  • 선물하기 결제하신 후 14일까지 받는 분이 선물번호를 등록하지 않으실 경우 주문은 자동취소 됩니다.
  • 또한 배송 전 상품이 품절 / 절판 될 경우 주문은 자동취소 됩니다.

바로드림 서비스 안내

  1. STEP 01
    매장 선택 후 바로드림 주문
  2. STEP 02
    준비완료 알림 시 매장 방문하기
  3. STEP 03
    바로드림존에서 주문상품 받기
  • 바로드림은 전국 교보문고 매장 및 교내서점에서 이용 가능합니다.
  • 잡지 및 일부 도서는 바로드림 이용이 불가합니다.
  • 각 매장 운영시간에 따라 바로드림 이용 시간이 달라질 수 있습니다.

수령 안내

  • 안내되는 재고수량은 서비스 운영 목적에 따라 상이할 수 있으므로 해당 매장에 문의해주시기 바랍니다.
  • 바로드림 주문 후 재고가 실시간 변동되어, 수령 예상시간에 수령이 어려울 수 있습니다.

취소/교환/반품 안내

  • 주문 후 7일간 찾아가지 않으시면, 자동으로 결제가 취소됩니다.
  • 취소된 금액은 결제수단의 승인취소 및 예치금으로 전환됩니다.
  • 교환/반품은 수령하신 매장에서만 가능합니다.

사은품 관련 안내

  • 바로드림 서비스는 일부 1+1 도서, 경품, 사은품 등이 포함되지 않습니다.

음반/DVD 바로드림시 유의사항

  • 음반/DVD 상품은 바로드림 주문 후 수령점 변경이 불가합니다. 주문 전 수령점을 꼭 확인해주세요.
  • 사은품(포스터,엽서 등)은 증정되지 않습니다.
  • 커버이미지 랜덤발매 음반은 버전 선택이 불가합니다.
  • 광화문점,강남점,대구점,영등포점,잠실점은 [직접 찾아 바로드림존 가기], [바로드림존에서 받기] 로 주문시 음반코너에서 수령확인이 가능합니다.
  1. STEP 01
    픽업박스에서 찾기 주문
  2. STEP 02
    도서준비완료 후 휴대폰으로 인증번호 전송
  3. STEP 03
    매장 방문하여 픽업박스에서 인증번호 입력 후 도서 픽업
  • 바로드림은 전국 교보문고 매장 및 교내서점에서 이용 가능합니다.
  • 잡지 및 일부 도서는 바로드림 이용이 불가합니다.
  • 각 매장 운영시간에 따라 바로드림 이용 시간이 달라질 수 있습니다.

수령 안내

  • 안내되는 재고수량은 서비스 운영 목적에 따라 상이할 수 있으므로 해당 매장에 문의해주시기 바랍니다.
  • 바로드림 주문 후 재고가 실시간 변동되어, 수령 예상시간에 수령이 어려울 수 있습니다.

취소/교환/반품 안내

  • 주문 후 7일간 찾아가지 않으시면, 자동으로 결제가 취소됩니다.
  • 취소된 금액은 결제수단의 승인취소 및 예치금으로 전환됩니다.
  • 교환/반품은 수령하신 매장에서만 가능합니다.

사은품 관련 안내

  • 바로드림 서비스는 일부 1+1 도서, 경품, 사은품 등이 포함되지 않습니다.

음반/DVD 바로드림시 유의사항

  • 음반/DVD 상품은 바로드림 주문 후 수령점 변경이 불가합니다. 주문 전 수령점을 꼭 확인해주세요.
  • 사은품(포스터,엽서 등)은 증정되지 않습니다.
  • 커버이미지 랜덤발매 음반은 버전 선택이 불가합니다.
  • 광화문점,강남점,대구점,영등포점,잠실점은 [직접 찾아 바로드림존 가기], [바로드림존에서 받기] 로 주문시 음반코너에서 수령확인이 가능합니다.

도서 소득공제 안내

  • 도서소득공제란?

    • 2018년 7월 1일 부터 근로소득자가 신용카드 등으로 도서구입 및 공연을 관람하기 위해 사용한 금액이 추가 공제됩니다. (추가 공제한도 100만원까지 인정)
      • 총 급여 7,000만 원 이하 근로소득자 중 신용카드, 직불카드 등 사용액이 총급여의 25%가 넘는 사람에게 적용
      • 현재 ‘신용카드 등 사용금액’의 소득 공제한도는 300만 원이고 신용카드사용액의 공제율은 15%이지만, 도서·공연 사용분은 추가로 100만 원의 소득 공제한도가 인정되고 공제율은 30%로 적용
      • 시행시기 이후 도서·공연 사용액에 대해서는 “2018년 귀속 근로소득 연말 정산”시기(19.1.15~)에 국세청 홈택스 연말정산간소화 서비스 제공
  • 도서 소득공제 대상

    • 도서(내서,외서,해외주문도서), eBook(구매)
    • 도서 소득공제 대상 상품에 수반되는 국내 배송비 (해외 배송비 제외)
      • 제외상품 : 잡지 등 정기 간행물, 음반, DVD, 기프트, eBook(대여,학술논문), 사은품, 선물포장, 책 그리고 꽃
      • 상품정보의 “소득공제” 표기를 참고하시기 바랍니다.
  • 도서 소득공제 가능 결제수단

    • 카드결제 : 신용카드(개인카드에 한함)
    • 현금결제 : 예치금, 교보e캐시(충전에한함), 해피머니상품권, 컬쳐캐쉬, 기프트 카드, 실시간계좌이체, 온라인입금
    • 간편결제 : 교보페이, 네이버페이, 삼성페이, 카카오페이, PAYCO, 토스, CHAI
      • 현금결제는 현금영수증을 개인소득공제용으로 신청 시에만 도서 소득공제 됩니다.
      • 교보e캐시 도서 소득공제 금액은 교보eBook > e캐시 > 충전/사용내역에서 확인 가능합니다.
      • SKpay, 휴대폰 결제, 교보캐시는 도서 소득공제 불가
  • 부분 취소 안내

    • 대상상품+제외상품을 주문하여 신용카드 "2회 결제하기"를 선택 한 경우, 부분취소/반품 시 예치금으로 환원됩니다.

      신용카드 결제 후 예치금으로 환원 된 경우 승인취소 되지 않습니다.

  • 도서 소득공제 불가 안내

    • 법인카드로 결제 한 경우
    • 현금영수증을 사업자증빙용으로 신청 한 경우
    • 분철신청시 발생되는 분철비용

알림 신청

아래의 알림 신청 시 원하시는 소식을 받아 보실 수 있습니다.
알림신청 취소는 마이룸 > 알림신청내역에서 가능합니다.

소프트웨어의 품격
자바로 살펴보는 좋은 소프트웨어 개발
한달 후 리뷰
/ 좋았어요
작년까지만 해도 주식은 커녕 재테크에 관해 아무것도 모르다가 올해 주식 투자를 시작했다. 아무것도 모르고 초심자의 행운으로 분유값 정도를 벌고 나니, 조금 더 공부해보고 싶어져서 『초격차 투자법』을 구매했다.
작년까지만 해도 주식은 커녕 재테크에 관해 아무것도 모르다가 구매했어요! 저도 공부하고 싶어서 구매했어요~ 다같이 완독 도전해봐요! :)
기대가됩니다~
작년까지만 해도 주식은 커녕 재테크에 관해 아무것도 모르다가 구매했어요! 저도 공부하고 싶어서 구매했어요~ 다같이 완독 도전해봐요! :)
기대가됩니다~
작년까지만 해도 주식은 커녕 재테크에 관해 아무것도 모르다가 구매했어요! 저도 공부하고 싶어서 구매했어요~ 다같이 완독 도전해봐요! :)
작년까지만 해도 주식은 커녕 재테크에 관해 아무것도 모르다가 구매했어요! 저도 공부하고 싶어서 구매했어요~ 다같이 완독 도전해봐요! :)
기대가됩니다~
기대가됩니다~
기대가됩니다~
기대가됩니다~
이 구매자의 첫 리뷰 보기
/ 좋았어요
하루밤 사이 책한권을 읽은게 처음이듯 하다. 저녁나절 책을 집어든게 잘못이다. 마치 게임에 빠진 아이처럼 잠을 잘수없게 만든다. 결말이 어쩌면 당연해보이는 듯 하여도 헤어나올수 없는 긴박함이 있다. 조만간 영화화되어지지 않을까 예견해 본다. 책한권으로 등의 근육들이 오그라진 느낌에 아직도 느껴진다. 하루밤 사이 책한권을 읽은게 처음이듯 하다. 저녁나절 책을 집어든게 잘못이다. 마치 게임에 빠진 아이 처럼 잠을 잘수없게 만든다. 결말이 어쩌면 당연해보이는 듯 하여도 헤어나올수 없는 긴박함이 있다. 조만간 영화화되어지지 않을까..
작년까지만 해도 주식은 커녕 재테크에 관해 아무것도 모르다가 구매했어요! 저도 공부하고 싶어서 구매했어요~ 다같이 완독 도전해봐요! :)
기대가됩니다~
신고

신고 사유를 선택해주세요.
신고 내용은 이용약관 및 정책에 의해 처리됩니다.

허위 신고일 경우, 신고자의 서비스 활동이 제한될 수 있으니 유의하시어
신중하게 신고해주세요.

판형알림

  • A3 [297×420mm]
  • A4 [210×297mm]
  • A5 [148×210mm]
  • A6 [105×148mm]
  • B4 [257×364mm]
  • B5 [182×257mm]
  • B6 [128×182mm]
  • 8C [8절]
  • 기타 [가로×세로]