목차
1. 소프트웨어 공학의 배경 = 2
1.1 소프트웨어 공학의 정의 = 2
1.2 소프트웨어 위기(Software Crisis) = 2
1.2.1 하드웨어 발전 과정 = 2
1.2.2 소프트웨어 발전 과정 = 4
1.2.3 소프트웨어 위기란? = 4
1.2.4 소프트웨어 위기의 원인 = 5
1.2.5 소프트웨어 위기의 해결 방법 = 7
1.3 소프트웨어 공학의 범위 = 9
1.4 Chapter Summary = 10
1.5 Exercise Problems = 10
2. 소프트웨어 프로세스 = 12
2.1 개발 단계 = 12
2.2 소프트웨어 프로세스 모델 = 14
2.2.1 소프트웨어 개발 생명 주기 = 14
2.2.2 프로세스 성숙도 = 15
2.3 순차적 모델 = 17
2.3.1 개념 = 17
2.3.2 개발 단계 = 17
2.3.3 장점 및 단점 = 19
2.4 프로토타입 모델 = 21
2.4.1 개념 = 21
2.4.2 개발 단계 = 22
2.4.3 장점 및 단점 = 23
2.5 RAD 모델 = 25
2.5.1 개념 = 25
2.5.2 개발 단계 = 26
2.5.3 장점 및 단점 = 27
2.6 나선형 모델 = 27
2.6.1 개념 = 27
2.6.2 개발 단계 = 29
2.6.3 장점 및 단점 = 30
2.7 Chapter Summary = 32
2.8 Exercise Problems = 33
3. 소프트웨어 과제 관리 = 36
3.1 프로젝트 관리 개념 = 36
3.1.1 프로젝트 관리 태스크 = 36
3.1.2 관리 스펙트럼 = 40
3.2 스프트웨어 메트릭 = 42
3.2.1 메트릭 개념 = 42
3.2.2 크기 중심 메트릭 = 43
3.2.3 기능 중심 메트릭 = 44
3.2.4 메트릭간의 조정 = 47
3.2.5 소프트웨어 품질 메트릭 = 49
3.2.6 소프트웨어 프로세스와 메트릭 = 51
3.3 프로젝트 계획 = 52
3.3.1 프로젝트 추정 = 52
3.3.2 LOC 기반 추정 = 53
3.3.3 FP 기반 추정 = 55
3.3.4 COCOMO 모델 = 58
3.4 업무 및 일정 계획 = 60
3.4.1 PERT 차트 = 61
3.4.2 Gantt 차트 = 63
3.5 개발 계획서 작성 = 65
3.6 Chapter Summary = 67
3.7 Exercise Problems = 68
4. 구조적 분석 기법 = 72
4.1 요구사항 명세 기법 = 73
4.1.1 요구사항 정의 = 73
4.1.2 요구사항 명세서 = 75
4.1.3 요구사항 명세 원리 = 81
4.2 자료 사전(Date Dictionary) = 84
4.2.1 개요 = 84
4.2.2 표기법 = 85
4.2.3 자료 사전 작성 = 90
4.3 자료 흐름도(Data Flow Diagram) = 91
4.3.1 개요 = 92
4.3.2 표기법 = 93
4.3.3 자료 흐름도 분할 = 98
4.3.4 자료 흐름도 작성 = 102
4.3.5 자료 흐름도의 확장 = 103
4.4 프로세스 명세서(Process Specification) = 104
4.4.1 개요 = 105
4.4.2 구조적 영어 = 106
4.5 개체 관계도(Entity Relationship Diagram) = 109
4.5.1 개요 = 110
4.5.2 표기법 = 110
4.5.3 개체 관계도 작성 = 118
4.6 상태 전이도(State Transition Diagram) = 120
4.6.1 개요 = 121
4.6.2 표기법 = 121
4.6.3 상태 전이도 분할 = 125
4.6.4 상태 전이도 작성 = 127
4.7 다이어그램간의 관계 = 129
4.7.1 자료 사전과 자료 흐름도 간의 관계 = 130
4.7.2 자료 흐름도와 프로세스 명세서 간의 관계 = 130
4.7.3 자료 사전과 프로세스 명세서 간의 관계 = 131
4.7.4 개체 관계도와 자료 흐름도 = 132
4.7.5 자료 흐름도와 상태 전이도 = 132
4.8 Chapter Summary = 133
4.9 Exercise Problems = 134
5. 소프트웨어 설계 기법 = 138
5.1 설계 원리 = 139
5.2 아키텍쳐 설계(Architecture Design) = 140
5.2.1 변환 흐름 기반의 아키텍쳐 설계 = 141
5.2.2 트랜잭션 흐름 기반의 아키텍쳐 설계 = 146
5.3 모듈 설계 = 149
5.3.1 응집도 = 150
5.3.2 결합도 = 153
5.4 데이터 설계(Data Design) = 155
5.4.1 정보 은닉 = 155
5.4.2 자료 추상화 = 156
5.4.3 데이터 설계 기법 = 156
5.5 인터페이스 설계(Interface Design) = 157
5.5.1 상호 작용에 대한 설계 지침 = 158
5.5.2 정보 디스플레이에 대한 설계 지침 = 159
5.5.3 데이터 입력에 대한 설계 지침 = 160
5.6 Chapter Summary = 161
5.7 Exercise Problems = 162
6. 소프트웨어 시험 및 검증 = 166
6.1 결점 시험 = 167
6.1.1 블랙 박스 시험 = 168
6.1.2 화이트 박스 시험 = 174
6.2 단위 시험 = 178
6.3 통합 시험 = 183
6.3.1 하향식 통합 = 185
6.3.2 상향식 통합 = 188
6.3.3 쓰레드 시험 = 190
6.4 검증 시험 = 192
6.5 시스템 시험 = 194
6.5.1 회복 시험 = 195
6.5.2 보안 시험 = 196
6.5.3 스트레스 시험 = 197
6.5.4 성능 시험 = 198
6.6 오류 수정 및 확인 = 198
6.7 Chapter Summary = 200
6.8 Exercise Problems = 201
7. 객체지향 프로그래밍 핵심 개념 = 204
7.1 객체지향 기술의 발전 배경 = 204
7.2 객체지향적 시각 = 206
7.3 객체 = 208
7.3.1 객체의 정의 = 209
7.3.2 캡슐화 = 210
7.3.3 정보 은폐 = 211
7.3.4 메시지 전달 = 213
7.3.5 객체의 조건 = 214
7.3.6 복합 객체(Composite Object) = 215
7.4 클래스 = 216
7.4.1 개념 = 216
7.4.2 인스턴스(Instance) = 217
7.5 속성 상속 = 219
7.5.1 개념 = 219
7.5.2 함수의 재정의 = 222
7.5.3 다중성(Polymorphism) = 223
7.5.4 사례 : 대학교 인사 관리 = 224
7.5.5 복수 상속(Multiple Inheritance) = 227
7.6 가상 클래스 = 229
7.7 제네릭 클래스 = 232
7.8 객체지향 프로그래밍의 장점 = 235
7.9 Summary = 237
7.10 Exercise Problems = 238
8. UML 기반의 객체지향 분석 및 설계 = 242
8.1 객체지향 개발 프로세스 = 244
8.2 객체지향 분석 기법(OOA) = 246
8.2.1 Use Case 다이어그램(Use Case Diagram) = 247
8.2.2 개략 클래스 다이어그램(Conceptual Class Diagram) = 254
8.2.3 순차도(Sequence Diagram) = 262
8.2.4 상태도(Statechart Diagram) = 267
8.2.5 활동도(Activity Diagram) = 270
8.3 객체지향 설계 기법(OOD) = 274
8.3.1 상세 클래스 다이어그램(Detailed Class Diagram) = 275
8.3.2 컴포넌트 다이어그램(Component Diagram) = 276
8.3.3 물리적 구성도(Deployment Diagram) = 281
8.4 Summary = 284
8.5 Exercise Problems = 285
9. 소프트웨어 공학 관련 분야 = 290
9.1 소프트웨어 재사용 = 290
9.2 소프트웨어 재사용 절차 = 290
9.2.1 소프트웨어 재사용 접근에 대한 제안 = 291
9.2.2 재사용 가능한 항목 = 292
9.2.3 재사용 프로세스 모델 = 293
9.2.4 컴포넌트 기반의 개발(Component-Based Development) = 296
9.2.5 재사용 환경 = 297
9.3 소프트웨어 재공학 = 298
9.3.1 소프트웨어 재공학의 개념 = 298
9.3.2 소프트웨어 재공학 프로세스 = 300
9.3.3 소프트웨어 역공학 = 303
9.4 CASE 도구 = 306
9.4.1 자동화 도구 = 307
9.4.2 CASE를 위한 구축 블록(Building Block) = 308
9.4.3 CASE 도구의 분류 = 310
9.4.4 통합 CASE 환경 = 313
9.4.5 통합 구조 = 314
9.4.6 CASE 저장소 = 315
9.5 Chapter Summary = 317
9.6 Exercise Problems = 318
참고문헌 = 319
Glossary of Terms = 325
Index = 339