목차
제1장 소프트웨어 공학
1. 소프트웨어 공학의 정의와 개념 = 14
2. 소프트웨어 공학의 역사 = 15
3. 소프트웨어 공학의 특징 = 17
4. 소프트웨어의 특징 = 19
5. 좋은 프로그램이란 무엇인가 = 20
6. 소프트웨어의 품질 = 22
연습문제 = 27
제2장 소프트웨어의 라이프 사이클
2.1 소프트웨어생명주기모형(SDLC : SoftwareDevelopmentLifeCycle) = 28
2.1.1 전형적인 생명 주기(폭포수 모형) = 30
2.1.2 프로토타입 모형 = 30
2.1.3 정보 공학 모델 = 31
2.2. 요구 분석(requirements analysis) = 33
2.3. 설계(design) = 34
2.4. 프로그래밍 = 38
2.5. 검사(test) = 41
2.6. 유지 보수(maintenance) = 42
연습문제 = 44
제3장 시스템 개발 방법론
3.1 시스템 개발 방법론 = 45
3.1.1 개요 = 45
3.1.2 시스템 개발 주기(System Development Life Cycle) = 46
3.2 시스템 분석 및 설계 개요 = 47
3.2.1 시스템 분석 = 48
3.2.2 시스템 분석자 = 48
3.2.3 시스템의 개발 방법 = 48
3.3 구조적 분석 = 51
3.3.1 구조적 분석 개요 = 51
3.3.2 구조적 분석 과정 = 51
3.3.3 구조화 명세서 = 52
3.3.4 자료 흐름도 = 54
3.3.5 자료 사전 = 59
3.3.6 소단위 명세서 = 62
3.4. 시스템 검토 회의 = 66
3.4.1 검토 회의 효과 = 66
3.4.2 단계별 검토 대상 = 67
3.4.3 참석자 및 역할 = 67
3.4.4 검토 회의 결과 = 68
3.5 구조화 설계 = 68
3.5.1 구조화 설계의 중요성 = 69
3.5.2 시스템 모형화 도구 = 70
3.5.3 설계 구조도 = 71
3.5.4 모듈 명세서 = 75
3.6 시스템의 구현 = 78
3.6.1 구현 방법 = 79
연습문제 = 81
제4장 소프트웨어 관리
4.1 소프트웨어 관리 체계 = 83
4.2 소프트웨어 계획 관리 = 86
4.2.1 소프트웨어 개발 범주의 정의 = 88
4.2.2 프로젝트 목표의 설정과 개발 전략의 정립 = 89
4.2.3 소프트웨어 작업 분류 구조의 정의 = 90
4.2.4 프로젝트 진행 계획 = 91
4.3 소프트웨어 개발 조직 관리 = 96
4.3.1 개발 조직의 설계 = 98
4.3.2 프로젝트 팀 구조의 설계 = 102
4.3.3 프로젝트 요원 배치 = 105
4.4 소프트웨어 개발 관리 = 106
4.4.1 목표 설정 = 109
4.4.2 목표 추구 활동 = 111
4.4.3 평가 = 116
4.5 소프트웨어 품질 관리 = 116
4.5.1 품질 목표 설정 = 118
4.5.2 품질 관리 계획 수립 = 119
4.5.3 품질 관리 활동 = 120
4.5.4 평가 = 130
4.6 소프트웨어 조정 관리 = 130
연습문제 = 132
제5장 소프트웨어 개발 계획 수립
5.1 계획의 정의 = 134
5.1.1 문제의 정의 = 134
5.2.2 목표와 요구 사항 = 135
5.2 추진 계획의 수립 = 139
5.3 개발 과정의 설계 = 141
5.3.1 단계적 모형(phased life-cycle model) = 141
5.3.2 이정표, 문서, 재조사 = 145
5.3.3 비용 모델(cost model) = 153
5.3.4 원형 라이프 사이클 모형 = 155
5.3.5 계통적 버전(successive versions) = 158
5.4 기타 계획 수립 = 158
5.4.1 구성 관리 및 품질 보증 계획 수립 = 158
5.4.2 독립적인 검증 및 확인 계획 수립 = 159
5.4.3 단계별 사용 도구 및 확인 계획 수립 = 159
5.4.4 기타 계획 수립 활동 = 160
연습문제 = 161
제6장 소프트웨어 비용 산정
6.1 소프트웨어 비용 결정 요소 = 164
6.1.1 프로그래머의 자질 = 164
6.1.2 제품의 복잡도 = 165
6.1.3 제품의 크기 = 167
6.1.4 가용 시간 = 168
6.1.5 신뢰도 수준 = 170
6.1.6 기술 수준 = 170
6.2 소프트웨어 비용 산출 기법 = 172
6.2.1 전문가의 감정 = 172
6.2.2 델파이(Delphi)식 비용 산정 = 173
6.2.3 업무 분류 구조 방법 = 175
6.2.4 연산 방식의 비용 모형 = 176
6.3 조직 수준의 산정 = 180
6.4 소프트웨어 유지·보수 비용의 산정 = 183
연습문제 = 186
제7장 요구분석
7.1 사용자 요구(user needs)의 특성 = 189
7.2 요구 분석 = 192
7.3 요구 모델과 요구 사양서 = 200
연습문제 = 204
제8장 설계
8.1 설계 수준 = 208
8.1.1 구조화의 원리 = 213
8.1.2 구조화의 과정 = 215
8.1.3 구조화 설계법 = 216
8.1.4 Warnier-Orr 기법 = 219
8.2 큰 사양의 분할 = 211
8.3 복잡한 사양의 설계 = 223
8.3.1 시스템의 계층 분할 = 224
8.3.2 하향식 설계법 = 226
8.3.3 새로운 사고 방식에 대해 = 227
연습문제 = 228
제9장 프로그래밍
9.1 프로그래밍 언어 = 229
9.1.1 초기의 프로그래밍 언어 = 230
9.1.2 FORTRAN = 231
9.1.3 ALGOL = 231
9.1.4 COBOL = 232
9.1.5 LISP = 232
9.1.6 C = 232
9.1.7 그 밖의 프로그래밍 언어 = 233
9.2 컴파일러(compiler) = 235
9.2.1 컴파일러란 무엇인가? = 235
9.2.2 목적 프로그램(object program) = 236
9.2.3 실행 형식 프로그램 = 238
9.2.4 로더(loader) = 238
9.3 컴파일러의 기능적 구조 = 240
9.3.1 원시 프로그램의 판독(read) = 241
9.3.2 어휘 분석 = 241
9.3.3 구문 해석과 폴란드 표기법 = 242
9.3.4 중간 언어의 생성 = 244
9.3.5 최적화(optimization) = 245
9.3.6 목적(object) 프로그램의 생성 = 245
9.4 엔터프리터(interpreter) = 246
9.5 프로그램의 구조 = 247
9.5.1 간단한 프로그램 = 247
9.5.2 네스트(nest) 구조 = 250
9.5.3 모듈(module) = 252
9.5.4 모듈의 호출 = 255
9.5.5 실파라미터와 형식 파라미터 = 257
9.5.6 유효 범위(scope) = 260
9.5.7 재귀 호출(recursive call) = 262
연습문제 = 264
제10장 검사
10.1 테스트와 검사 방법 = 269
10.1.1 단위 테스트와 결합 테스트 = 269
10.1.2 단위 테스트를 하기 위한 특별한 모듈 = 270
10.1.3 결합 테스트(integration test) = 271
10.1.4 단위 테스트의 개요 = 274
10.1.5 그 밖의 검사 = 275
10.1.6 검사의 올바른 방법 = 277
10.2 단위 테스트의 방법 = 279
10.2.1 외관 검사 = 279
10.2.2 눈으로 보는 검사 = 279
10.2.3 화이트 박스법 = 280
10.2.4 블랙 박스법 = 283
10.2.5 원인·결과 그래프(cause-effect graphing) = 284
10.2.6 실험 계획법의 응용 = 287
10.3 디버그(debug) = 288
10.3.1 오류(error) 상황 = 289
10.3.2 디그레이드(degrade) 문제 = 290
10.3.3 오류 분석 = 292
10.3.4 디버그용 도구(debugging tool) = 294
10.4 검사에 의한 판정 = 294
10.4.1 신뢰성 판단의 순서 = 295
연습문제 = 297
제11장 소프트웨어 유지·보수
11.1 유지·보수의 용이성 = 301
11.1.1 분석 활동(analysis activities) = 302
11.1.2 표준 및 지침(standards and guidelines) = 302
11.1.3 설계 활동(design activities) = 303
11.1.4 구현 활동(implementation activities) = 303
11.1.5 보조 문서(supporting documents) = 304
11.2 유지·보수 관리 = 305
11.2.1 변경 관리 위원회(change control board) = 307
11.2.2 변경 요청 일람 = 308
11.2.3 품질 보증 활동(quality assurance activities) = 308
11.2.4 유지·보수 프로그래머 조직의 구성 = 309
11.3 구성 관리 = 310
11.3.1 구성 관리 데이터 베이스 = 311
11.3.2 버전 제어 라이브러리(version control libraries) = 312
11.4 원시 코드의 매트릭스 = 312
11.4.1 할스테드의 노력 방정식 = 313
11.4.2 멕케브 사이클로매틱 매트릭스(cyclomatic metrics) = 315
11.5 각종 도구 및 기법 = 316
연습문제 = 319
제12장 소프트웨어 품질 관리
12.1 소프트웨어 품질 보증 체계 = 321
12.1.1 종합 관리 절차 = 321
12.1.2 품질 보증 체계 = 322
12.2 소프트웨어 품질 목표 정의 = 324
12.2.1 품질 목표 정의 과정 = 324
12.2.2 품질 요구 분석 = 325
12.2.3 품질 목표 정의 = 327
12.3 소프트웨어 품질 보증 계획 = 329
12.3.1 품질 보증 계획 = 329
12.3.2 표준화 = 332
12.3.3 베이스라인 관리 = 334
12.3.4 품질 보증 계획서 = 336
12.4 소프트웨어 품질 평가 = 338
12.4.1 품질 평가 절차 = 338
12.4.2 품질 평가 = 339
12.4.3 시정 조치 = 340
연습문제 = 341
제13장 객체 지향 소프트웨어 공학
13.1 소프트웨어 위기 = 343
13.2 객체 지향 패러다임 = 345
13.3 객체 지향이란? = 347
13.4 객체 지향의 정의 = 352
13.4.1 객체(object) = 352
13.4.2 클래스 = 354
13.5 객체 지향 개념의 구현 = 357
13.6 객체 지향 기술의 구현 = 362
13.7 객체 지향 프로그래밍 언어 = 368
13.8 객체 지향 언어의 종류와 특성 = 372
연습문제 = 380
제14장 객체 지향 프로그래밍 방법
14.1 객체 지향 방법의 정의 = 381
14.2 객체 지향 방법 비교와 평가 = 388
14.2.1 플러의 방법론 비교 = 388
14.2.2 Champeaux의 비교 평가 = 393
14.2.3 Monarchi와 Puhr의 비교 평가 = 394
14.3. 객체 지향의 미래 = 396
14.4. ATM의 객체 모델링 사례연구 = 398
14.4.1 초기 요구 사항 = 398
14.4.2 문제 분석의 단계 = 399
14.4.3 객체의 선정 단계 = 403
14.4.4 객체의 속성 정의 단계 = 405
14.4.5 고객의 행위 추출 단계 = 406
14.4.6 모델링 카드 작성 단계 = 409
연습문제 = 418
제15장 소프트웨어 리엔지니어링
15.1 CASE = 419
15.1.1 상위 CASE = 422
15.1.2 하위 CASE = 424
15.1.3 통합 CASE = 427
15.2 객체 지향 CASE 도구 = 428
15.2.1 객체 지향 CASE 기술 = 429
15.2.2 객체 지향 CASE 도구 = 431
15.2.3 응용 사례 = 434
15.2.4 객체 지향의 미래 = 440
15.3 사용자 인터페이스 관리 시스템 = 440
15.3.1 X-WINDOW = 442
15.4 소프트웨어 재사용 = 444
15.4.1 블록 구성 방법 = 446
15.4.2 생성 방법 = 446
15.5 소프트웨어 역공학 = 447
15.5.1 역공학의 배경 = 447
15.5.2 역공학과 관련된 정의 = 449
15.5.3 역공학의 목적 = 449
연습문제 = 451
제16장 전망
16.1 다시 배우기 위해 = 454
16.2 소프트웨어 과학 = 455
16.3 QC(품질 관리 = 456
16.4 현장의 발상 = 458
16.5 소프트웨어 사용자(software user) = 462
16.6 사용자가 생각해야 할 다른 문제 = 465
16.7 꿈의 컴퓨터 시스템 = 466
16.7.1 꿈의 시스템이 가져야 할 성격 = 466
16.7.2 객체 지향 프로그래밍(OOP) = 467
16.7.3 꿈의 시스템과 OOP의 관계 = 469
부록 = 472
참고문헌 = 496