목차
1장 소프트웨어 개발 성공의 열쇠, 분석과 설계 ... 18
   쿠키의 소프트웨어 개발기① : 소프트웨어 만들기에 실패하다! ... 20
   Intro 왜 분석/설계가 필요한가 ... 24
      1. 소프트웨어 개발에도 라이프 사이클이 있다 ... 25
      2. 구조화 분석과 ER 모델링을 배운다 ... 26
   Part 1 분석으로 프로그램을 꿰뚫자 ... 28
      1. 구조화 분석의 기초 ... 28
      2. 모르면 손해보는 「분석」요령 다섯 가지 ... 38
      쿠키의 소프트웨어 개발기② : 분석부터 다시 시작하자! ... 50
   Part 2 ER 모델링으로 설계하자! ... 54
      1. 엔티티의 실체 ... 55
      2. ERD로 알 수 있는 것 ... 59
        속성을 어느 엔티티가 가지게 할 것인가? ... 61
      3. 엔티티의 대응 수를 알자 ... 62
      4. ER 모델링에 도전해 보자 ... 64
      5. 엔티티의 의존 관계를 조사한다 ... 66
      6. 속성의 의존 관계를 조사한다 ... 68
      7. DFD와 ERD를 병용하자 ... 69
        논리모델에서 상세설계로 ... 70
      쿠키의 소프트웨어 개발기③ : ER 모델링을 해 봤지만… ... 72
   Part 3 개발에 성공한 분석/설계의 실제 ... 76
      1. 분석/설계에 시간을 들이다 ... 76
      2. 표준이 되는 시스템은 어디에도 없었다 ... 78
      3. 우선 어떤 데이터가 있는지 조사한다 ... 78
      4. DOA가 아니라면... ... 79
      5. 상위 공정으로 돌아가지 않고 구현으로.. ... 80
      6. 원활하게 진행할 수 있었던 이유 ... 81
      쿠키의 소프트웨어 개발기④ : 드디어 프로그램 완성! 하지만… ... 82
2장 사용자와 개발자, UML로 통하기 ... 86
   Part 1 UML 맛보기 ... 88
      1. 시스템을 모델화하는 UML ... 88
      2. 객체지향과 UML이 중요한 이유 ... 90
      3. 객체지향의 장점 ... 91
   Part 2 다이어그램을 알면 UML이 보인다 ... 93
      1. 클래스 다이어그램과 오브젝트 다이어그램 ... 94
        [TIP] 클래스는 어떤 관계들을 맺고 있나? ... 98
      2. 유스케이스 다이어그램 ... 100
        [TIP] 유스케이스 사이의 관계를 나타내는 방법 ... 103
      3. 시퀀스 다이어그램 ... 105
      4. 컬래버레이션 다이어그램 ... 107
      5. 스테이트차트 다이어그램 ... 109
   Part 3 시스템 개발 과정 속의 UML ... 112
      1. 시스템 개발의 각 공정과 UML ... 114
      2. UML에서 사용되는 나머지 다이어그램들 ... 115
3장 제대로 해 보는 프로그램 설계 ... 118
   Part 1 알기 쉬운 프로그램 설계하기 ... 120
      1. 로봇 프로그래밍? ... 120
      2. 로봇의 제어 사양을 확인하자 ... 122
      3. 알기 쉬운 프로그래밍을 위한 사고 과정 ... 124
        Parameter 클래스의 설계 ... 132
   Part 2 리팩토링으로 프로그램을 생생하게 ... 144
      1. 리팩토링을 안전하게 수행하는 요령 ... 146
        리팩토링 노하우 모음, 리팩토링 카탈로그 ... 149
      2. 목적을 정하고 리팩토링 하자 ... 150
      3. 실전! 리팩토링 ... 151
      4. 리팩토링으로 기존 프로그램을 효과적으로 활용 ... 164
4장 꼼꼼한 설계의 지름길, 디자인 패턴 다지기 ... 166
   쿠키의 소프트웨어 개발기⑤ : 디자인 패턴을 만든다는 것 ... 168
   Part 1 소프트웨어의 설계의 원형 틀 디자인 패턴 ... 169
      1. 초보자도 할 수 있는 클래스 설계 ... 169
      2. 개발자들의 '노하우'를 '재이용' ... 172
        다양한 소프트웨어 개발 패턴 ... 173
        디자인 패턴 학습을 위한 참고서 ... 174
      3. 디자인 패턴의 활용 ... 176
      4. 각 패턴의 장점과 단점 ... 181
   Part 2 꼭 알아 둘 디자인 패턴 칠 형제 ... 184
      Factory Method ... 185
      Abstract Factory ... 190
      Singleton ... 194
      Composite ... 196
      Adapter ... 199
      Observer ... 204
      Command ... 209
   Part 3 실전에서 익히는 디자인 패턴의 활용 ... 214
      ① 교육용 웹 사이트에 사용한 Singleton/Template Method ... 214
        1. 리소스 관리에 Singleton 패턴 사용 ... 215
        2. Template Method 패턴으로 비즈니스 로직에 집중 ... 220
        3. 적절한 패턴을 적용하는 것이 효과적 ... 222
      ② 실험 시료 관리 소프트웨어에 사용된 Adapter/Singleton ... 223
        1. Adapter 패턴으로 인터페이스를 변환한다 ... 224
        2. 데이터베이스 접속 관리에 Singleton 패턴 사용 ... 228
        디자인 패턴은 객체지향 설계의 교본 ... 230
      ③ 대화형 GUI 애플리케이션에 사용된 Observer/Command ... 232
        1. 대화형 애플리케이션 프레임워크를 구축한다 ... 233
        2. Observer 패턴을 사용하여 의존성 없애기 ... 234
        3. 메시지가 한 바퀴 돌아 처리가 완결 ... 238
5장 프로그래머의 필수 도구, 객체지향 주무르기 ... 240
   Part 1 객체지향에 관한 다섯 가지 의문 ... 242
      1. 객체지향이란 무엇인가? ... 242
      2. 결국, 객체지향이란? ... 251
   Part 2 객체지향 기술의 변함없는 기본 틀 ... 254
      1. 10년이 지나도 변하지 않는 기본 ... 254
      2. 네 가지 틀, 핵심/실행/개발/실천 ... 256
      3. 시작은 OOP의 이해부터 ... 259
      4. 소프트웨어 구조를 그림으로 표현한 UML ... 261
      5. 노하우의 집합, 디자인 패턴 ... 262
      6. 분석/설계 방법으로 완비! ... 263
      객체지향 기술이 집약된 RUP와 XP ... 264
   Part 3 객체지향 프로그래밍이 빠지기 쉬운 함정 ... 266
      1. 객체지향과 현실 세계 ... 266
      2. '보아(BoA)'를 만들어 노래를 부르게 한다!? ... 268
      3. 클래스와 인스턴스의 관계 ... 271
      4. 상속 관계와 친자 관계 ... 272
        혼동하기 쉬운 '상속'과 '클래스-인스턴스' 관계 ... 272
      5. 상속은 전체 집합과 부분 집합의 관계 ... 274
      6. 폴리모피즘은 비현실적인가? ... 276
      7. 호출 방법을 통일하여 유지 보수를 편하게 ... 277
   Part 4 구조화 프로그래밍에는 한계가 있다 ... 280
      1. 주사위 게임을 만들자 ... 281
        Java로 하는 구조화 프로그래밍 ... 282
      2. 주사위를 던지는 알고리즘 ... 284
      3. 주사위 게임 완성! ... 287
      4. 공포의 사양변경 ... 292
      5. 그렇다! 오브젝트맨을 부르자! ... 294
   Part 5 OOP의 진수는 철저한 역할분담 ... 296
      1. 지난 줄거리 ... 296
      2. 역할분담을 철저히 하라! ... 297
      3. 등장인물에서 클래스를 결정 ... 299
      4. 필요하면 부모님께도 손을 벌리자! ... 300
      5. 변경에 강하고 재이용이 쉬워졌다 ... 303
      6. 플레이어에서 가짜 플레이어를 만들다 ... 304
      7. 심판 클래스와 기록담당 클래스의 가치 평가 ... 307
      8. 역할분담의 효과는 얼마나? ... 313
      9. OOP로 기술된 프로그래밍을 읽는 요령 ... 314
   Part 6 UML을 사용한 정적 분석 ... 318
      1. UML의 여덞 가지 다이어그램 ... 319
      2. UML은 커뮤니케이션 수단 ... 320
      3. 분석은 사용자의 요구를 이해하는 작업 ... 322
        분석에서 꼭 알아 둘 네 가지 항목 ... 325
      4. 클래스, 연관, 상속을 마스터하자 ... 326
        소프트웨어 개발 기술의 발전 과정 ... 328
      5. 정적인 구조 분석의 일곱 가지 노하우 ... 330
      6. 클래스 다이어그램의 내용을 검증해 보자 ... 333
   Part 7 UML을 사용한 동적 분석 ... 336
      1. 액티비티 다이어그램으로 업무 전체의 흐름을 정리 ... 336
        액티비티 다이어그램을 그리는 요령 ... 339
      2. 업무처리 전체를 표현할 때의 장점 ... 340
      3. 유스케이스 다이어그램의 기능을 정리한다 ... 341
      4. 효율적인 유스케이스 사용 요령 ... 343
      5. 스테이트차트 다이어그램으로 비즈니스 룰을 정리 ... 346
      6. 분석 작업의 진행 방법 ... 347
      7. 적재적소에 UML을 사용하자 ... 349
   Part 8 객체지향 설계를 잘하려면 ... 352
      1. 왜 UML에 의한 설계가 필요한가? ... 352
      2. 메소드/속성/연관 상세화는 클래스 다이어그램에서 ... 355
      3. 시퀀스 다이어그램, 인스턴스 간 메시지를 접수하라! ... 358
      4. 설계에서 클래스 다이어그램을 잘 다루려면 ... 359
      5. 유지보수와 재이용성 높은 객체지향 설계 요령 ... 361
      기억해 두면 좋은 세 가지 디자인 패턴 ... 364
      객체지향 설계의 비전서 디자인 패턴 ... 366
6장 프로에게 듣는 단계별 분석/설계 노하우 ... 368
   Part 1 훌륭한 시스템 설계자가 되려면 ... 370
      1. 상류공정의 공임이 높은 이유 ... 371
      2. 「기억력」과 「이해력」보다도 「표현력」을 ... 372
      3. 「형식을 중요시한다」는 것 ... 374
      4. 이해 못하는 게 읽는 사람 탓인가? ... 376
      5. 초보자도 알기 쉬운 형식이 필요하다 ... 378
      6. 업무 플로용 도면을 비교 검토한다 ... 379
      7. 단일 형식으로 세계를 설명할 수 있을까 ... 384
      왜 분석/설계가 필요한가? ... 387
   Part 2 책상이 아닌 현장에서 ... 390
      1. 손과 눈을 사용하여 생각한다 ... 391
      2. '탁상주의'의 폐해 ... 393
      3. 「현장주의」의 장점 ... 395
      4. '대충 만들어 보기'를 권함 ... 398
      5. 「트집의 계기」가 되는 「대충 만들기」 ... 399
      6. 「피드백 사이클」을 방해하는 것 ... 401
      7. 양질의 설계 사례를 가능한 한 많이 읽자 ... 402
      「분석/설계」를 할 수 있는 프로그래머는 SE가 싫어한다? ... 404
   Part 3 업무의 흐름을 스케치한다 ... 407
      1. 여행을 가자!(예약관리) ... 409
      2. 돌아오는 교통편이 없다고!?(수배관리) ... 412
      3. 여행에 만족하셨습니까?(입금과 follow up) ... 415
      4. 수배의 어려움도 알아주세요(수지관리) ... 419
      5. 협의를 마치고... ... 420
      6. 「고조선 시대의 집」을 복원한다? ... 421
      7. 불단 놓을 곳이 없다니! ... 423
      업무관련도 '읽기'와 '작성하기' ... 426
   Part 4 데이터의 형태를 디자인한다 ... 429
      1. 「발리섬 4일 투어」를 모델링한다 ... 432
      2. 간사와 옵션 투어 ... 435
      3. 발주사무 업무는 사라지는가? ... 439
      4. 매상과 입금의 처리 ... 442
      5. 데이터 모델에 개인차는 나는가? ... 446
      데이터 모델을 읽는 법 ... 449
   Part 5 일과 도구를 디자인한다 ... 452
      1. 데이터 모델의 열매 - '처리 패턴' ... 454
      2. '예약 접수업무'의 지원가능 ... 459
      3. '출발확정 업무'의 순서와 지원기능 ... 460
      4. '발주업무'의 순서와 지원기능 ... 462
      5. 단시간에 양질의 성과물을 만들자 ... 469
      6. 직장을 프로그래밍하다 ... 470
      '업무정의'의 중요성과 도법 ... 473
   Part 6 실연을 통해 확인한다 ... 477
      1. 「나무꾼」의 3요소 ... 479
      2. 「처리되어야 하는 정보의 형태」를 계층화한다 ... 481
      3. 서브시스템이란 무엇인가? ... 485
      4. 데이터 모델의 CRUD ... 488
      5. 업무매뉴얼과 담당자별 메뉴를 소홀히 해선 안된다 ... 490
      6. 실연의 효과 ... 492
      7. 「행선지」를 정하고 나서 「신을 신발」을 결정하자 ... 494
      사용자와 동료 설계자의 눈높이에서 ... 497
부록 설계와 코딩을 동시에 하는 확장형 개발 도구 : IBM Rational Rose XDE ... 500
   Part 1 IBM Rational Rose XDE ... 501
      IBM Rational Rose XDE의 특징 ... 503
   Part 2 IBM Rational Rose XDE의 활용 ... 506
      코드와 모델이 동기화 기능 ... 507
      Java Assited Modeling 기능으로 작업 부하 경감 ... 508
      UML로 개발 팀원들과 원활한 의사소통 ... 509
      특정 웹 사이트 구성 요소를 일괄적으로 추출 ... 510
      모델들 간의 동적 참조 ... 511
      커스텀 패턴 및 코드 템플릿의 활용 ... 513
   Part 3 IBM Rational Rose XDE의 확장 ... 514
      형상관리 도구와의 통합으로 팀 단위 프로젝트 지원 ... 514
      요구관리 도구와의 통합을 통한 추적관리 지원 ... 515
찾아보기 ... 518
닫기