목차
제1장 소프트웨어공학 ... 1
   1.1 소프트웨어공학 정의와 개념 ... 1
   1.2 소프트웨어공학의 역사 ... 2
   1.3 소프트웨어공학의 형태 ... 4
   1.4 소프트웨어공학의 특색 ... 6
   1.5 좋은 소프트웨어란 ... 8
   1.6 소프트웨어의 품질 ... 12
   1.7 소프트웨어의 위기 ... 14
제2장 소프트웨어의 라이프싸이클 ... 17
   2.1 라이프싸이클의 개요 ... 17
   2.2 요구분석 ... 22
      2.1.1 니즈분석 ... 23
      2.1.2 요구사양화 ... 24
   2.3 설계 ... 26
   2.4 코우딩 ... 28
   2.5 테스트 ... 29
   2.6 운용·보수 ... 30
   2.7 개발기술의 진전 ... 38
제3장 요구분석 ... 39
   3.1 요구분석의 중요성 ... 39
      3.1.1 요구분석이란 ... 39
      3.1.2 요구분석의 문제점 ... 40
      3.1.3 요구분석의 사고법 ... 43
   3.2 요구분석의 작업공정 ... 45
   3.3 요구분석 방법론 및 도구 ... 48
      3.1.1 니즈분석 공정의 방법론 및 도구 ... 50
      3.1.2 요구사양화 공정의 방법론 및 도구 ... 53
   3.4 실예의 요구분석 ... 65
      3.4.1 목적 ... 65
      3.4.2 무엇을 할 것인가 ... 66
      3.4.3 환경 ... 69
   3.5 실예의 사양석 ... 69
      3.5.1 개요설계 ... 71
      3.5.2 입출력 등의 기본적인 방식을 결정 ... 71
      3.5.3 외부사양서의 기술 ... 77
제4장 설계표현 ... 79
   4.1 HIPO ... 79
   4.2 데이터플로우 다이어그램(DFD) ... 102
   4.3 구조화챠트 ... 111
   4.4 Warnier-Orr 다이어그램 ... 118
   4.5 Nassi-Shneiderman 챠트 ... 127
   4.6 Program Design Language(PDL) ... 132
제5장 설계개념 ... 139
   5.1 설계법의 분류 ... 139
      5.1.1 설계법이란 ... 139
      5.1.2 설계법의 중요성과 역사 ... 140
      5.1.3 설계법의 범위 ... 141
   5.2 모듈화 ... 144
   5.3 추상화 ... 146
   5.4 추상데이타형 ... 152
   5.5 추상데이타형의 예 ... 155
   5.6 객체지향 ... 161
      5.6.1 객체 ... 162
      5.6.2 메시지 ... 162
      5.6.3 크래스와 인스턴스 ... 163
      5.6.4 수퍼크래스와 계승 ... 164
제6장 톱다운과 보텀업 설계 ... 169
   6.1 개요 ... 169
   6.2 설계사상과 설계 ... 170
제7장 모듈러 설계 ... 175
   7.1 개요 ... 175
   7.2 모듈의 설계 ... 176
      7.2.1 모듈의 외부설계 ... 176
      7.2.2 모듈의 논리설계 ... 177
   7.3 모듈러 프로그래밍의 장단점 ... 178
   7.4 모듈 설계의 예제 ... 179
제8장 구조화설계와 복합설계 ... 189
   8.1 구조화의 중요성 ... 189
   8.2 복합설계 ... 192
      8.2.1 표기법 ... 193
      8.2.2 설계방법 ... 194
      8.2.3 모듈분할기준 ... 200
      8.2.4 복합설계상의 주의점 ... 211
      8.2.5 복합설계의 특징 ... 211
      8.2.6 복합설계의 샘플 예 ... 212
   8.3 프로그램 구조설계의 예 ... 214
      8.3.1 분할의 실예 ... 215
      8.3.2 공통기능 모듈의 발견 ... 218
      8.3.3 인터페이스의 명시 ... 221
   8.4 모듈 내부설계의 설예 ... 223
      8.4.1 모듈 내부설계를 요하는 모듈 ... 223
      8.4.2 상위레벨 모듈 내부설계도 ... 224
      8.4.3「메뉴표시와 선택」의 모듈 내부설계도 ... 227
      8.4.4.「화일내용의 표시」의 모듈 내부설계도 ... 227
      8.4.5 단순한 기능 모듈의 설계 ... 227
   8.5 설계의 다큐먼트 기술 ... 239
      8.5.1 다큐먼트의 역할 ... 239
      8.5.2 프로그램사양서 ... 240
      8.5.3 설계 다큐먼트의 종류 ... 241
      8.5.4 실예의 화일명 ... 242
제9장 데이터구조지향 설계법 ... 247
   9.1 Jackson 설계법 ... 248
      9.1.2 설계순서 ... 249
      9.1.2 구조일치 경우의 설계순서 ... 253
      9.1.3 구조불일치 경우의 설계순서 ... 258
   9.2 Warnier 설계법 ... 260
      9.2.1 설계순서 ... 260
      9.2.2 설계순서의 구체적인 예 ... 265
제10장 데이타플로우지향 설계법 ... 271
   10.1 설계와 정보의 흐름 ... 271
      10.1.1 기원 ... 271
      10.1.2 어플리케이션의 범위 ... 272
   10.2 설계과정의 고찰 ... 272
      10.2.1 변환 플로우 ... 273
      10.2.2 트랜잭션 플로우 ... 274
      10.2.3 처리의 추상화 ... 275
   10.3 변환분석 ... 276
      10.3.1 예제 ... 276
      10.3.2 설계단계 ... 278
   10.4 트랜잭션 분석 ... 285
      10.4.1 예제 ... 285
      10.4.2 설계단계 ... 286
   10.5 블록구축 ... 292
   10.6 설계의 뒷처리 ... 293
   10.7 설계의 최적화 ... 295
제11장 객체지향 설계 ... 297
   11.1 객체지향 설계방법 ... 298
   11.2 문제정의 ... 298
   11.3 비정규적 전략 ... 301
   11.4 전략의 정식화 ... 302
      11.4.1 객체 및 그속성 ... 305
      11.4.2 객체에 적용되는 조작 ... 305
      11.4.3 프로그램 구성요소와 인터페이스 ... 308
      11.4.4 객체지향 설계에 대한 그래픽 표현 ... 311
      11.4.5 실행 세부사항 ... 313
   11.5 다른 대안을 이용한 접근방법 ... 318
      11.5.1 설계단계 ... 319
      11.5.2 설계 예 ... 320
제12장 코우딩 기술 ... 329
   12.1 코우딩 지침 ... 329
      12.1.1 표현방법 ... 330
      12.1.2 구조의 선택 ... 330
      12.1.3 시스템 장해대책 수립 ... 330
      12.1.4 품질향상 ... 330
      12.1.5 코우딩 스타일 ... 331
      12.1.6 모듈 헤더 ... 334
   12.2 제어구조문 ... 335
      12.2.1 선택구조 ... 335
      12.2.2 반복구조 ... ?
   12.3 헤더화일 ... 338
      12.3.1 마크로치환 ... 338
      12.3.2 함수의 프로우트타입 ... 339
      12.3.3 화일포함 ... 341
   12.4 코우딩의 예 ... 345
      12.4.1 문자열입력 모듈 ... 345
      12.4.2 코드변환 모듈 ... 349
      12.4.3 10→16진수 변환처리 모듈 ... 353
제13장 테스트 기술 ... 359
   13.1 테스트와 검사의 사고법 ... 360
      13.1.1 단위테스트와 통합테스트 ... 361
      13.1.2 단위테스트를 위한 특별한 모듈 ... 362
      13.1.3 통합테스트 방법 ... 363
      13.1.4 단위테스트의 개요 ... 366
      13.1.5 시스템 테스트 ... 368
   13.2 테스트케이스의 설계방법 ... 369
      13.2.1 블랙박스 테스트 ... 370
      13.2.2 화이트 박스 테스트 ... 376
      13.2.3 테스트케이스의 설계순서 ... 379
   13.3 테스트도구 ... 380
   13.4 실예의 드라이버 / 스타브 ... 383
      13.4.1 드라이버 ... 383
      13.4.2 실예의 스타브 ... 388
   13.5 실예의 코우딩 리스트와 테스트 드라이버 ... 390
제14장 디자인 리뷰 ... 433
   14.1 디자인 리뷰의 중요성 ... 433
      14.1.1 디자인 리뷰 ... 433
      14.1.2 디자인 리뷰의 목적 ... 434
      14.1.3 디자인 리뷰의 필요성 ... 434
      14.1.4 소프트웨어의 설계품질의 개념 ... 436
   14.2 디자인 리뷰의 내용과 실시방법 ... 437
      14.2.1 디자인 리뷰의 내용 ... 437
      14.2.2 소프트웨어의 개발공정과 생산물 ... 439
      14.2.3 디자인 리뷰의 관리체제와 관리방법 ... 440
      14.2.4 디자인 리뷰 준비 ... 442
      14.2.5 디자인 리뷰 실시방법 ... 442
      14.2.6 체크리스트 ... 446
제15장 프록그램의 품질관리 - 워크스루우 / 인스펙션 ... 451
   15.1 프로그램의 품질 ... 451
   15.2 품질관리 방침 ... 452
      15.2.1 에러의 방지 ... 452
      15.2.2 에러의 검출 ... 455
   15.3 IPI와 품질관리 ... 459
   15.4 구조화챠트 워크스루와 인스펙션 ... 461
      15.4.1 종래의 리뷰미팅의 반성 ... 461
      15.4.2 구조화 워크스루우란 ... 462
      15.4.3 워크스루우와 인스펙션 ... 464
   15.5 워크스루우의 진행방법 ... 465
   15.6 코드 리딩 ... 467
   15.7 워크스루우와 프로그래머팀장 ... 471
   15.8 워크스루우와 프로젝트 계획 ... 474
제16장 운용·보수 ... 477
   16.1 소프트웨어 보수의 형태 ... 477
   16.2 소프트웨어 라이프싸이클과 보수 ... 479
   16.3 보수성이란 ... 481
   16.4 보수 작업순서 ... 486
   16.5 소프트웨어 보수의 문제점 ... 489
   16.6 해결에의 어프로치 ... 491
   16.7 보수용 도구 ... 493
      16.7.1 개별 도구의 문제점 ... 493
      16.7.2 도구시스템의 문제점 ... 494
      16.7.3 보수용 도구의 예 ... 499
제17장 프로젝트의 관리 ... 505
   17.1 프로젝트의 계획과 관리의 방법 ... 505
   17.2 시스템 계획 ... 506
      17.2.1 시스템계획이란 ... 506
      17.2.2 새로운 작업의 추가와 일정의 변경 ... 509
      17.2.3 시스템계획의 작성 ... 511
      17.2.4 시스템계획 미팅 ... 512
      17.2.5 문제의 해결과 트래킹 ... 515
      17.2.6 프로젝트 의존사항 ... 515
      17.2.7 설계변경 건수와 확인 ... 515
      17.2.8 코우딩 및 유니트테스트의 진척상황과 관리 ... 517
      17.2.9 테스트의 진척관리 ... 518
제18장 소프트웨어의 재이용 기술 ... 521
   18.1 재이용의 설계기술 ... 521
   18.2 소프트웨어 재이용의 개념 ... 523
      18.2.1 소프트웨어 개발과 재이용 ... 525
      18.2.2 재이용의 단위 ... 526
      18.2.3 소프트웨어 버스 ... 529
   18.3 재이용 도구 ... 530
참고문헌 ... 541
찾아보기 ... 547
닫기