logo
logo
x
바코드검색
BOOKPRICE.co.kr
책, 도서 가격비교 사이트
바코드검색

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

Head First Software Development

Head First Software Development

(더 쉽고 재미있게 소프트웨어를 개발하는 방법)

댄 필로네, 러스 마일즈 (지은이), 황상철, 이정룡, 조재혁 (옮긴이)
  |  
한빛미디어
2008-11-30
  |  
29,000원

일반도서

검색중
서점 할인가 할인률 배송비 혜택/추가 실질최저가 구매하기
yes24 로딩중
교보문고 로딩중
영풍문고 로딩중
인터파크 로딩중
11st 로딩중
G마켓 로딩중
쿠팡 로딩중
쿠팡로켓 로딩중
notice_icon 검색 결과 내에 다른 책이 포함되어 있을 수 있습니다.

중고도서

검색중
로딩중

e-Book

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
로딩중

책 이미지

Head First Software Development

책 정보

· 제목 : Head First Software Development (더 쉽고 재미있게 소프트웨어를 개발하는 방법)
· 분류 : 국내도서 > 컴퓨터/모바일 > 컴퓨터 공학 > 소프트웨어 공학
· ISBN : 9788979146226
· 쪽수 : 500쪽

책 소개

기본적인 소프트웨어 개발 기법과 함께 리팩토링, 테스팅 등 더 효과적인 시스템 관리법을 재미있는 예제를 통해 쉽게 학습할 수 있는 책. 효율적인 프로젝트 진행 관리 방법과 완료된 소프트웨어의 유지 보수를 위한 리팩토링과 버전 관리, 배포 등 다양한 절차를 개발 순서에 맞게 책 전체에 걸쳐 포괄적으로 설명하고 있다.

목차

1. 훌륭한 소프트웨어 개발하기
고객을 기쁘게 하라


Tom's Trails을 온라인으로
거의 모든 프로젝트에는 두 가지 중요한 고민이 있습니다.
개발에 대한 빅뱅(Big Bang)식 접근
2주가 지났습니다.
빅뱅 개발은 보통 큰 혼란(BIG MESS)으로 끝이 납니다.
훌륭한 소프트웨어 개발이란...
이터레이션으로 목표 달성하기
각 이터레이션은 작은 프로젝트와 같습니다.
이터레이션이 품질 좋은 소프트웨어를 만듭니다.
고객의 마음은 변합니다.
수정을 어떻게 하느냐는 여러분에게 달려있습니다.
여러분은 이미 오랫동안 개발을 진행해 왔습니다.
이터레이션은 변화를 자동으로 (그것도 잘) 관리합니다.
여러분의 소프트웨어는 출시 될 때까지 완료된 게 아닙니다.
소프트웨어 개발도구 상자 활용하기

2. 요구사항 수집하기
고객이 원하는 것을 알아내야 합니다


오리온 우주투어 차세대 프로젝트
고객에게 더 많은 정보를 달라고 말하세요.
고객과의 블루스카이
때로는 블루스카이를 진행하는 게 아래처럼 될 수 있습니다.
사람들이 정말로 원하는 것을 찾아보세요.
여러분의 요구사항은 고객지향적 이어야 합니다.
고객 피드백으로부터 요구사항 확장하기
사용자 스토리로 프로젝트에서 무엇을 해야 하는지를 정의하고... 언제 정의해야 하는지를 알 수 있습니다.
짤막한 대화
계획 포커 게임
가정은 살아있는 동안 재판을 받습니다.
오래 걸리는 사용자 스토리 추정은 잘못된 추정입니다.
계획 포커의 목적은 의견 수렴입니다.
이터레이션 주기를 추정하는 것에 대한 요구사항
마지막으로, 전체 프로젝트에 대해 추정할 준비가 되었습니다.

3. 프로젝트 계획하기
성공을 위한 계획


고객은 바로 지금 자신들의 소프트웨어를 갖길 원합니다.
고객과 함께 우선순위 정하기
마일스톤 1.0에 뭐가 있는지 알게 되었습니다.
기능이 맞지 않으면 우선순위를 재조정합니다.
사람을 더 투입하면 더 큰 성과가 날까요?
적정 수준의 마일스톤 1.0을 위해 일하세요.
이터레이션은 짧고 달콤해야 합니다.
게획을 현실과 비교하기
개발속도는 추정 값에서 부담되는 부분을 책임집니다.
프로그래머는 꿈결 같은 시간을 생각합니다.
개발자는 현실적인 시간을 생각합니다.
언제 이터레이션이 너무 길어지나요?
이터레이션 들어가기 전에 개발속도 반영하기
평가를 위한 시간
[피곤하게 하는] 고객 다루기
벽에 커다란 현황판을 만드세요.
팀의 생기를 없애는 방법

4. 사용자 스토리와 태스크
실제로 일을 시작해 봅시다


iSwoon을 소개합니다.
태스크의 합이란 무엇을 의미할까요?
남은 작업 구성하기
현황판에 태스크 붙이기
태스크상의 일 시작하기
태스크는 진행 중 영역에 있을 때만 진행되고 있는 겁니다.
만약 동시에 두 가지 일을 한다면 어떻게 될까요?
첫 번째 스탠드업 미팅...
태스크 1: Date 클래스 생성하기
스탠드 업 미팅: 다섯 번째 날, 첫 주의 마지막...
스탠드 업 미팅: 두 번째 주, 두 번째 날...
이번 장의 훼방꾼이 나타났어요.
계획되지 않은 태스크를 추적해야 합니다.
계획하지 않은 태스크가 소멸 비율을 증가시킵니다.
속도가 도움이 됩니다만...
할 일이 많이 남았습니다.
...하지만 우리가 어디에 있는지를 정확히 알고 있습니다.
노출된 속도

5. 충분히 구현 가능한 좋은 설계
훌륭한 설계로 작업하기


iSwoon이 심각한 문제에 빠졌습니다.
이 설계는 단일 책임 원리를 따르지 않습니다.
설계에서 다중 책임을 갖는 곳 찾기
다중 책임을 단일 책임으로 전환하기
설계는 SRP를 준수해야 합니다. 또 DRY도 준수해야 합니다.
리팩토링 후 스탠드업 미팅
계획되지 않은 태스크도 태스크일 뿐입니다.
데모 자체도 태스크의 일부입니다.
모든 것이 완료되면, 이터레이션은 끝이 납니다.

6. 버전 관리
안전한 개발


새로운 계약을 따냈습니다 - 비트박스 프로
그리고 계속해서 GUI 작업...
고객에게 새로운 비트박스 선보이기
버전 관리를 시작합시다.
먼저 여러분의 프로젝트를 설치합니다.
...이제 코드를 체크인 또는 체크아웃할 수 있습니다.
대부분의 버전 관리 도구가 여러분이 직면한 문제를 해결해 줄 것입니다.
서버는 수정사항을 자동으로 합치려 합니다.
버전 관리 소프트웨어가 변경사항을 합칠 수 없으면 충돌이 발생했음을 알립니다.
이터레이션이 많아지면 사용자 스토리도 많아집니다.
우리는 소프트웨어에 대해 하나 이상의 버전을 갖고 있습니다.
좋은 커밋 메시지는 예전 소프트웨어를 찾기 쉽게 해줍니다.
이제 1.0 버전을 체크아웃할 수 있습니다.
(긴급) 스탠드업 미팅
여러분의 버전에 태그를 생성하세요.
태그, 브랜치, 트렁크... 아이고!
1.0 버전 수정하기.. 이번엔 실제 상황입니다.
이제 두 개의 코드 기반을 갖게 되었습니다.
언제 브랜치를 사용하면 안될까요?
BeatBox Pro 1.x 브랜치 관리를 잘 하려면
버전관리는 다음과 같은 작업을 수행합니다.
버전관리는 여러분의 코드가 실제로 작동하는지 보장하지 않습니다.
소프트웨어 개발 도구상자 활용하기

6.5작성한 코드 빌드하기
b 슬롯 안에 있는 a 탭을 넣으세요


개발자는 기억력 좋은 독자가 아닙니다.
한 번에 프로젝트 빌드하기
앤트(Ant): 자바 프로젝트를 위한 빌드 도구
프로젝트(proejct), 프로퍼티(property), 타겟(target), 태스크(task) 엘리먼트
좋은 빌드 스크립트...
좋은 빌드 스크립트는 기본 사항 외에 더 많은 것을 수행합니다.
빌드 스크립트도 코드입니다.
신입 개발자는 두 가지를 얻었습니다.
소프트웨어 개발 도구상자 활용하기

7. 테스트와 지속적인 통합
코드 분해하기


모든 것은 항상 잘못될 수 있습니다.
시스템을 바라보는 시각에는 3가지가 있습니다.
블랙박스 테스트는 입출력 값에 집중합니다.
그레이박스 테스트는 보다 코드 안쪽을 살펴봅니다.
화이트박스 테스트는 구현코드 내부를 확인합니다.
한 번에 모든 것을 테스트하기
테스트 프레임워크에서 테스트 자동화하기
테스트를 실행하기 위해 프레임워크 사용하기
크루즈컨트롤(Cruise Control)의 CI 사이클
테스트는 코드가 정상적으로 작동하는 것을 보장합니다. 맞나요?
모든 코드를 테스트한다는 것은 모든 분기문을 테스트한다는 의미입니다.
무엇이 테스트되었는지 알기 위해서 커버리지 리포트를 사용하세요.
높은 커버리지률을 갖는 것이 항상 쉬운 것은 아닙니다.
개발 환경에서 버전 관리 도구가 하는 것들
소프트웨어 개발 도구상자 활용하기

8. 테스트 주도 개발
코드는 항상 설명하기 쉽게 작성하세요


테스트는 나중에 하는 것이 아니고 처음부터 하는 것입니다.
그래서 처음부터 테스트를 수행할 예정입니다.
테스트 주도 개발(TDD)에 온 것을 환영합니다.
여러분의 첫 번째 테스트...
… 끔찍하게 실패한다는 것입니다.
테스트를 녹색으로 변경하기
적색, 녹색 그리고 리팩토링...
TDD에서 테스트는 여러분의 개발을 이끌어 줍니다.
테스크를 완료했다는 것은 필요한 모든 테스트를 했고 모두 통과했다는 의미입니다.
테스트를 통과하면 바로 다음으로 넘어가세요!
간결함이란 의존성을 최대한 제거하는 것입니다.
항상 테스트 가능한 코드를 작성하세요.
테스트 하기 어려우며 설계내용을 살펴보세요.
전략 패턴을 이용하면 하나의 인터페이스를 다양하게 구현할 수 있습니다.
테스트용 코드는 테스트 클래스에서 관리하세요.
테스트는 더 나은 코드를 만듭니다.
테스트가 많아질수록 코드도 더 늘어납니다.
전략 패턴은 결합도를 낮추고, 객체화 합니다.
다양하지만 유사한 객체가 필요합니다.
이미 객체를 생성했다면 어떨까요?
목(Mock) 객체는 실제 객체를 대체합니다.
목 객체는 실제 객체를 대신해서 동작합니다.
좋은 소프트웨어는 테스트할 수 있습니다.
녹색으로 만들기는 쉬운 일이 아닙니다.
테스트 주도 개발자의 하루...
소프트웨어 개발 도구상자 활용하기

9. 이터레이션의 마무리
모든 것이 다 잘 되어갑니다


이터레이션이 이제 막 완성되려고 합니다.
...그러나 여러분이 할 수 있는 것이 많이 남아 있습니다.
시스템 테스트는 반드시 해야 합니다.
...그런데 누가 시스템 테스트를 하죠?
시스템 테스트는 테스트할 완전한 시스템이 있어야 합니다.
좋은 시스템 테스트는 두 개의 이터레이션 사이클이 필요합니다.
이터레이션이 많을수록 문제도 많습니다.
효과적인 시스템 테스트의 특징 Top 10
버그의 일생(그리고 죽음)
버그를 발견했다면...
버그 리포트의 해부
아직 할 수 있는 일이 많이 남아있습니다.
이터레이션 리뷰
이터레이션 리뷰에 대한 질문들
부가적인 일들을 위한 일반적인 우선순위 목록
소프트웨어 개발 도구상자 활용하기

10. 다음 이터레이션
프로젝트 변화에 빠르게 대처하기


작동하는 소프트웨어는...
다음 이터레이션의 계획이 필요합니다.
속도는... 프로젝트 현설을 반영합니다.
고객에 대한 이야기를 계속해 봅시다.
다른 사람의 소프트웨어도 그저 소프트웨어일 뿐입니다.
고객 승인? 확인해보죠!
테스트하기
태권브이, 우리 문제가 생겼어요.
아무도 믿지 마세요.
누가 코드를 작성했는지는 중요하지 않습니다. 만약 그것이 여러분의 소프트웨어라면 여러분에게 책임이 있습니다.
프로세스를 갖추지 못한 경우
프로세스를 갖춘 경우

11. 버그
프로답게 버그 잡기


먼저 고객에게 이야기해야 합니다.
우선순위 1: 코드가 빌드되도록 하라.
코드를 고칠 수야 있지만...
...하지만 기능을 수정해야 합니다.
어떤 기능이 동작하는지 알아보기
이제 여러분은 무엇이 동작안하는지 알고 있습니다.
무엇을 하시겠습니까?
추정을 위한 스파이크 테스트
스파이크 테스트의 결과가 의미하는 바는 무엇일까요?
팀원들이 실제로 느끼는 것이 중요합니다.
고객에게 버그 수정에 대해 추정한 내용을 전해주세요.
잘 되어가는 것처럼 보입니다.
...그리고 여러분은 성공적으로 이터레이션을 마쳤습니다!
그리고 가장 중요하게도 고객이 행복해 하네요.
소프트웨어 개발 도구상자 활용하기

12. 실제 세계
프로세스의 생활화


소프트웨어 개발 프로세스 명확히 하기
좋은 프로세스가 좋은 소프트웨어를 만듭니다.
형식을 갖춘 복장이 필요합니다.
더 살펴보아야 할 것들...
더 많은 지식 == 더 좋은 프로세스
소프트웨어 개발 도구상자 활용하기

부록1: 남은 것들
베스트 5(우리가 다루지 않았던)


#1. UML 클래스 다이어그램
#2. 시퀀스 다이어그램
#3. 사용자 스토리와 유스케이스
#4. 시스템 테스트 vs. 단위 테스트
#5. 리팩토링

부록 2: 기법과 원칙
숙련된 소프트웨어 개발자의 도구


개발 기법
개발 원칙

저자소개

댄 필로네 (지은이)    정보 더보기
엘리먼트 84의 창업자며 관리 파트너입니다. 그는 나사, 휴즈, ARINC, UPS, 미해군 연구소의 시스템 설계와 구현을 맡았습니다. 현재 나사 프로젝트, 엘리먼트 84 프로젝트의 테크니컬 리드로 일하고 있습니다. 최근에는 ESIP, AGU, DC Ruby Users Group 등의 커뮤니티에서 연사로도 활동했습니다. 워싱턴 D.C.의 가톨릭 대학교에서 프로젝트 관리, 소프트웨어 디자인, 소프트웨어 공학을 가르쳤습니다. 댄은 D.C. 아이폰 부트캠프에서 강사로 일했으며『 Head First Software Development』,『 UML 2.0 in a Nutshell』,『 UML 2.0 Pocket Reference』 등 다수의 책을 집필했습니다.
펼치기
러스 마일즈 (지은이)    정보 더보기
펼치기
황상철 (옮긴이)    정보 더보기
삼성SDS, NHN을 거쳐 현재는 SK planet SQE 팀에서 개발환경,개발 프로세스, 아키텍처를 멘토링하는 업무를 담당하고 있다. 품질 좋은 소프트웨어를 신속히 개발하는 데 관심이 많아서 이런 기법들을 공유하고 확산하는 활동에 적극적이다. 번역서로 『SOA 서비스 지향 아키텍처』, 『경험과 사례로 풀어낸 성공하는 애자일』 외 4권이 있으며, 『프로그래머로 산다는 것』을 공저했다.실용주의 이야기 블로그(http://pragmaticstory.com)를 운영 중이며, Play 사용자 그룹(https://www.facebook.com/groups/playuser/)과 애자일 코리아(https://www.facebook.com/groups/agilekorea/) 커뮤니티에서 활동한다.
펼치기
이정룡 (옮긴이)    정보 더보기
연세대학교 화학공학과를 졸업하였고 현재 삼성 SDS 인트라넷 개발파트에서 기업내 엔터프라이즈 포탈 구축 및 운영을 담당하고 있다. 최근에는 애자일 방법론을 도입하여 포탈 기반의 워크플레이스를 개발 중에 있으며 주요 관심분야는 애자일 개념을 기반으로 하는 워크플로우 시스템과 분산 환경 기반의 고성능 캐시서버 구축이다. 『Java Specification 3rd Edition』(에이콘, 2007)을 번역했다.
펼치기
조재혁 (옮긴이)    정보 더보기
전자전기공학을 전공했지만 소프트웨어 개발의 재미를 알고 삼성SDS에서 사회생활을 시작해 11년이 넘도록 개발에서 손을 떼기 싫어하며 개발자를 지향하는 소프트웨어 엔지니어다. 여러 기업, 공공 기관, 교육 기관의 업무 시스템 구축 프로젝트에 참여했으며 다양한 애자일 프랙티스를 적용해왔다.
펼치기

추천도서

이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책