목차
제1장 소프트웨어 공학 개념
1.1 소프트웨어 공학이란? = 2
1.2 소프트웨어의 특성 = 2
1.3 소프트웨어 컴포넌트 = 4
1.4 소프트웨어 위기 = 5
1.5 소프트웨어 프로세스 = 7
1.6 일반적 소프트웨어 공학 프로세스 = 9
1.7 소프트웨어 프로세스 모델 = 11
1.7.1 선형순차 모델 = 11
1.7.2 점증적 모델 = 13
1.7.3 나선형 모델 = 14
1.7.4 컴포넌트 어셈블리 모델 = 16
1.7.5 4GT 모델 = 18
1.8 소프트웨어 프로젝트 관리 = 19
요약 = 21
연습문제 = 22
제2장 소프트웨어 프로젝트 계획
2.1 프로젝트 계획수립의 목적 = 26
2.2 소프트웨어 범위 = 26
2.3 자원 = 27
2.3.1 인적 자원 = 28
2.3.2 재사용 가능 소프트웨어 자원 = 28
2.3.3 환경 자원 = 29
2.4 소프트웨어 프로젝트 추정 = 29
2.4.1 비용과 노력추정 매트릭스 = 30
2.4.2 분해기술 = 35
2.4.3 경험적 추정모델 = 38
2.4.4 자동추정도구 = 42
2.5 소프트웨어 프로젝트 일정 = 43
2.5.1 인간-작업 관계 = 43
2.5.2 업무정의 및 병행 = 44
2.5.3 노력분배 = 46
2.5.4 일정방법 = 47
2.6 조직계획 = 48
2.7 소프트웨어 프로젝트 계획지침 = 50
요약 = 52
연습문제 = 54
제3장 소프트웨어 품질보증
3.1 소프트웨어 품질과 품질보증 = 58
3.1.1 소프트웨어 품질요인들 = 58
3.1.2 품질보증과 품질비용 = 62
3.1.3 소프트웨어 품질보증활동 = 63
3.2 소프트웨어 검토 = 64
3.2.1 소프트웨어 오류의 비용 영향 = 65
3.2.2 결함증폭과 제거 = 65
3.3 정형적 기술검토 = 68
3.3.1 검토회의 = 69
3.3.2 검토보고와 기록보존 = 70
3.3.3 검토지침 = 70
3.4 소프트웨어 신뢰도 = 71
3.4.1 신뢰도와 유효성의 측정 = 71
3.4.2 소프트웨어 신뢰도 모델 =72
3.4.3 소프트웨어 안전성과 위험분석 = 74
3.5 SQA 계획
3.6 ISO 9000 표준 = 78
3.6.1 품질보증 시스템 대한 ISO 접근법 = 78
3.6.2 ISO 9001 표준 = 78
요약 = 80
연습문제 = 82
제4장 요구사항 분석모델과 기법
4.1 분석모델의 요소 = 86
4.2 데이터 모데링 = 87
4.2.1 데이터 객체, 속성, 관계 = 87
4.2.2 개체-관계 다이어그램 = 92
4.3 기능 모델링과 정보흐름 = 95
4.3.1 데이터 흐름도 = 97
4.3.2 데이터 흐름도의 확장 = 99
4.4 행위 모델링 = 99
4.5 구조적 분석 단계들 = 106
4.5.1 ERD생성 = 107
4.5.2 데이터 흐름 모델의 생성 = 112
4.5.3 제어 흐름 모델 생성 = 116
4.5.4 제어명세 = 116
4.5.5 프로세서 명세 = 118
4.5.6 데이터 사전 = 119
4.6 소프트웨어 요구사항 명세 = 123
요약 = 126
연습문제 = 128
제5장 소프트웨어 설계의 기본원칙
5.1 소프트웨어 설계와 소프트웨어 공학 = 132
5.2 설계 프로세스
5.2.1 설계와 소프트웨어의 품질 = 134
5.3 설계개념 = 134
5.3.1 추상화 = 135
5.3.2 단계적 정제 = 135
5.3.3 모듈성 = 136
5.3.4 소프트웨어 아키텍처 = 138
5.3.5 제어계층구조 = 139
5.3.6 구조적 분할 = 140
5.3.7 데이터 구조 = 142
5.3.8 소프트웨어 프로시저 = 143
5.3.9 정보은닉 = 144
5.4 모듈의 효율적 설계 = 144
5.4.1 기능적 독립성 = 145
5.4.2 응집도 = 145
5.4.3 결합도 = 146
5.5 효율적 모듈성을 위한 설계 휴리스틱 = 149
5.6 설계모델 = 152
5.7 설계문서화 = 153
요약 = 156
연습문제 = 158
제6장 소프트웨어 설계방법
6.1 데이터 설계 = 162
6.2 아키텍처 설계 = 163
6.2.1 아키텍처 설계과정 = 163
6.3 인터페이스 설계 = 182
6.4 프로시저 설계 = 184
6.4.1 구조적 프로그래밍 = 184
6.4.2 그래픽 설계 표기법 = 185
6.4.3 테이블 설계 표기법 = 188
6.4.4 프로그램 설계언어 = 190
요약 = 191
연습문제 = 193
제7장 소프트웨어 테스팅 기법
7.1 소프트웨어 테스트 기본 개념 = 196
7.2 테스트 케이스 설계 = 197
7.3 화이트박스 테스트 = 199
7.4 기본 경로 테스팅 = 200
7.4.1 흐름 그래프 기법 = 200
7.4.2 순환 복잡도 = 203
7.4.3 테스트 케이스 = 205
7.4.4 그래프 행렬 = 208
7.5 루프 테스팅 = 210
7.6 블랙박스 테스팅 = 212
7.6.1 균등분할 = 213
7.6.2 경계값 분석 = 215
요약 216
연습문제 = 218
제8장 소프트웨어 테스트 전략
8.1 소프트웨어 테스트의 전략적 접근방법 = 222
8.1.1 검증과 확인 = 222
8.1.2 소프트웨어 테스팅 조직 =223
8.1.3 소프트웨어 테스트 전략 = 224
8.2 단위 테스트 = 226
8.2.1 단위 테스트 고려사항 = 226
8.2.2 단위 테스트 절차 = 229
8.3 통합 테스트 = 231
8.3.1 하향식 통합 = 231
8.3.2 형상검토 = 235
8.4.3 알파 테스트와 베타 테스트 = 235
8.5 시스템 테스트 = 236
8.5.1 회복테스트 = 237
8.5.2 보안 테스트 = 237
8.5.3 강도 테스트 = 238
8.5.4 성능 테스트 = 238
8.6 디버깅 기교 = 239
8.6.1 디버깅 과정 = 239
8.6.2 디버깅 접근방법 = 241
요약 = 242
연습문제 = 244
제9장 소프트웨어 유지보수
9.1 소프트웨어 유지보수의 정의 = 248
9.2 유지보수의 특성 = 249
9.2.1 구조화된 유지보수 = 249
9.2.2 유지보수비용 = 250
9.2.3 유지보수의 문제점 = 250
9.3 유지보수성 = 251
9.3.1 유지보수성의 제어요인들 = 251
9.3.2 유지보수성의 정량적 측정 = 252
9.3.3 검토 = 253
9.4 유지보수의 부작용 = 253
9.4.1 코딩 부작용 = 254
9.4.2 데이터 부작용 = 254
9.4.3 문서 부작용 = 255
요약 = 256
연습문제 = 258
제10장 객체지향 분석과 설계
10.1 객체지향 개발 생명주기 = 262
10.1.1 객체지향 분석과 설계 프로세스 = 262
10.1.2 모델링 결과 = 264
10.2 UML = 265
10.3 Use-case 모델링 = 266
10.3.1 Use-case 다이어그램의 개발 = 267
10.3.2 Use-case들 사이의 관계 =269
10.3.3 Use-case 다이어그램밍 예 = 271
10.4 객체 모델링 : 클래스 다이어그램 = 274
10.4.1 객체와 클래스 = 274
10.4.2 연산타입 = 277
10.4.3 연관성(association)의 표현 = 283
10.4.4 연관성 클래스의 표현 = 283
10.4.5 파생속성, 파생 연관성, 파생역할의 표현 = 286
10.4.6 일반화의 표현 = 286
10.4.7 상속성과 오버라이딩의 해석 = 293
10.4.8 다중 다속성 표현 = 294
10.4.9 조립화 표현 = 296
10.4.10 비즈니스 규칙 = 298
10.4.11 동적 모델링 : 상태 다이어그램 = 299
10.4.12 상태와 상태천이 모델링 = 300
10.4.13 부분상태 다이어그램과 사건분해 = 302
10.5 동적모델링 : 시퀸스 다이어그램 = 306
10.5.1 시퀀스 다이어그램의 컴포넌트 = 306
10.5.2 시퀀스 다이어그램을 이용한 Use-Case의 설계 = 309
10.5.3 Hoosier Burger에 대한 시퀀스 다이어그램 = 314
10.6 분석대 설계 = 316
요약 = 321
연습문제 = 323
제11장 소프트웨어 공학의 초근동향
11.1 CASE = 326
11.1.1 CASE = 도구의 분류 = 328
11.1.2 그래픽 모델링 = 329
11.1.3 CASE 저장소 = 330
11.1.4 재공학 CASE 도구 = 331
11.1.5 통합 CASE 환경 = 332
11.2 소프트웨어 재사용 = 335
11.2.1 재상용의 장점 = 335
11.2.2 재상용 도입의 문제점 = 336
11.2.3 재상용 프로세스 = 337
11.2.4 도메인 공학 = 339
11.2.5 재사용 가능 컴포넌트 구축 = 340
11.3 클라이언트/서버 소프트웨어 공학 = 348
11.3.1 클라이언트/서버 시스템의 개념과 구조 = 348
11.3.2 클라이언트/서버 시스템 소프트웨어 공학 = 356
11.3.3 클라이언트/서버 시스템을 위한 분석 모델링 = 356
11.3.4 클라이언트/서버 시스템의 설계 = 356
11.3.5 클라이언트/서버 테스팅 전략 = 363
11.4 소프트웨어 재공학 = 367
11.4.1 소프트웨어 유지보수의 특성 = 367
11.4.2 소프트웨어 재공학의 필요성 = 368
11.4.3 소프트웨어 재공학 프로세스 모델 = 368
요약 = 386
연습문제 = 388
INDEX = 400