Chapter 1 소프트웨어 공학의 개념 Preview ... 10 1. 소프트웨어 공학의개념 ... 12 2. 소프트웨어의 특성 ... 12 3. 소프트웨어 공학의 발전 ... 13 4. 소프트웨어 수명주기 개념 ... 16 5. 소프트웨어 수명주기 모형 ... 17 생명주기(Life Cycle)의 유형 ... 17 생명주기의 변환 ... 18 출제적중예상문제 ... 20 Chapter 2 소프트웨어 프로젝트 관리 Preview ... 30 1. 프로젝트 관리의 개념 ... 32 프로젝트 관리 ... 32 프로젝트 관리 활동 ... 32 소프트웨어 형상 관리(SCM : Software Configuration Management) ... 33 2. 프로젝트 계획 및 예측 ... 35 프로젝트 계획 ... 35 프로젝트 조직 계획 ... 35 소프트웨어 개발과 프로젝트 비용 측정 ... 37 소프트웨어 비용 산정 방법론 ... 38 COCOMO(COnstructive COst MOdel) ... 39 Putnam 모델 ... 42 기능 점수(FP;Function Point)모형 ... 42 3. 프로젝트 일정 ... 43 프로젝트 이정표 ... 43 프로젝트 스케쥴링 ... 43 프로젝트 이행과 검토 ... 44 4. 소프트웨어 품질 보증 ... 45 소프트웨어 품질 구조 ... 45 품질 관리 ... 49 5. 위험(RISK)관리 ... 50 출제적중예상문제 ... 52 Chapter 3 전통적 소프트웨어 개발 방법론 Preview ... 62 1. 요구분석 ... 64 분석(Analysis) ... 64 요구사항 분석(Requirement Analysis) ... 64 요구분석 명세의 평가 ... 66 자료구조 중심 개발 방법 ... 67 잭슨 시스템 개발 방법(JSD ; Jackson System Development) ... 67 구조적 분석과 설계 기법(SADT ; Structured Analysis and Design Technique) ... 68 구조적 분석(Structured Analysis)의 도구 ... 68 2. 설계 ... 72 소프트웨어 설계의 중요성 ... 73 소프트웨어 설계의 분류 ... 74 소프트웨어 설계 기법 ... 74 다이어그램의 분류 ... 82 소프트웨어 설계의 평가 ... 84 소프트웨어 설계의 검토 ... 88 HIPO(Hierarchy plus Input Process Output) ... 89 3. 검사(Test) ... 90 시험 기법과 시험용 도구 ... 91 단위 테스트(Unit Test) ... 93 통합 테스트(Integration Test) ... 93 확인 테스트(Validity Test) ... 95 시스템 테스트(System Test) ... 95 디버깅(Debugging) ... 96 4. 구현(Implementation) ... 97 구현 단계 ... 97 프로그래밍 언어(Programming Language) ... 98 5. 유지 보수(Maintenance) ... 100 유지보수의 목적 ... 100 유지보수비용 ... 100 유지보수 부작용 ... 101 출제적중예상문제 ... 102 Chapter 4 객체지향 소프트웨어 Preview ... 116 1. 개념 및 원칙 ... 118 객체지향의 기본 원칙 ... 118 객체지향 용어 ... 119 객체지향 언어 ... 119 2. 객체지향 분석(OOA ; Object Oriented Analysis) ... 120 객체지향 분석 작업 ... 120 객체지향 분석 모델링 ... 121 Rambaugh의 객체지향 분석 모델링 ... 122 3. 객체지향 설계(OOD ; Object Oriented Design) ... 122 객체지향 설계 접근법 ... 122 OOD 표기법 ... 123 4. 객체지향 테스트 ... 123 추상자료형(ADT; Abstract Data Type) ... 123 캡슐화(Encapsulation) ... 123 모듈성(Modulality) ... 124 출제적중예상문제 ... 125 Chapter 5 소프트웨어 공학의 발전적 주제 Preview ... 134 1. 소프트웨어 재사용(Software Reuse) ... 136 컴퓨터 시스템 공학(Computer System Engineering) ... 136 정보 기술(IT; Information Technology) ... 137 재사용 방법(Software Reuse) ... 138 2. 리엔지니어링(Re-engineering) ... 139 재공학의 등장 배경 ... 139 소프트웨어 개조(re-structuring) ... 139 소프트웨어 재공학(re-engineering) ... 140 재공학 과정 ... 140 소프트웨어 역공학(reverse engineering) ... 140 3. 클라이언트 / 서버 소프트웨어 공학 ... 141 클라이언트 / 서버 아키텍처 ... 141 클라이언트 / 서버(Client ... 143 4. CASE 개발 도구 ... 145 CASE(Computer Aided Software Engineering)의 개념 ... 145 CASE 도구의 분류 ... 146 CASE 도구 ... 147 CASE의 발달 ... 148 전통적인 소프트웨어 개발과 CASE 소프트웨어 개발의 비교 ... 149 연구 방향의 제시 ... 149 출제적중예상문제 ... 150