새로쓴 소프트웨어공학
2024년 01월 05일 출간
- eBook 상품 정보
- 파일 정보 PDF (10.43MB)
- ISBN 9788935305223
- 지원기기 교보eBook App, PC e서재, 리더기, 웹뷰어
-
교보eBook App
듣기(TTS) 가능
TTS 란?텍스트를 음성으로 읽어주는 기술입니다.
- 전자책의 편집 상태에 따라 본문의 흐름과 다르게 텍스트를 읽을 수 있습니다.
- 이미지 형태로 제작된 전자책 (예 : ZIP 파일)은 TTS 기능을 지원하지 않습니다.
PDF 필기가능 (Android, iOS)

이 상품은 배송되지 않는 디지털 상품이며,
교보eBook앱이나 웹뷰어에서 바로 이용가능합니다.
작품소개
이 상품이 속한 분야
이 책에서는 다음과 같은 원리와 기법을 소개한다.
● 소프트웨어 개발 작업의 절차를 정의한 소프트웨어 프로세스 모델
● 프로젝트를 계획하고 관리하는 방법
● 사용자의 요구를 파악하고 분석하는 방법
● UML을 이용하여 모델링하고 설계하는 방법
● 아키텍처 설계 원리와 디자인 패턴
● 코딩 원칙과 오류를 효율적으로 발견하기 위한 테스팅 기법
● 소프트웨어가 릴리스 된 후의 유지보수 작업과 개발 단계의 품질 보증 기술
● 소프트웨어 엔지니어가 기본적으로 사용하는 도구
1.1 소프트웨어 20
1.1.1 소프트웨어의 유형 20
1.1.2 소프트웨어와 시스템 22
1.2 소프트웨어 공학의 필요성 24
1.2.1 고비용 24
1.2.2 지연과 낮은 신뢰도 26
1.2.3 유지보수와 재작업 27
1.3 소프트웨어 공학이란? 29
1.3.1 규모 30
1.3.2 품질과 생산성 31
1.3.3 일관성과 재현성 34
1.3.4 변경 35
1.4 소프트웨어 공학의 접근 방법 36
1.4.1 단계적 개발 프로세스 37
1.4.2 품질 보증 41
1.4.3 프로젝트 관리
1.5 소프트웨어 공학 지식체계 43
1.5.1 다른 분야와의 관계 43
1.5.2 SWEBOK 44
객관식 연습문제 47
주관식 연습문제 52
2장 프로세스와 방법론 55
2.1 소프트웨어 프로세스 58
2.1.1 프로세스와 프로세스 모델 58
2.1.2 프로세스의 종류 60
2.1.3 프로세스 정하기 62
2.2 바람직한 프로세스의 특성 63
2.2.1 예측 가능성 63
2.2.2 테스팅과 유지보수 편이성 65
2.2.3 변경 용이성 66
2.2.4 결함 제거 용이성 67
2.3 소프트웨어 개발 프로세스 모델 69
2.3.1 폭포수 모델 71
2.3.2 프로토타이핑 모델 76
2.3.3 진화적 모델 80
2.3.4 나선형 모델 84
2.3.5 V 모델 85
2.3.6 Unified 프로세스 86
2.3.7 애자일 프로세스 87
2.4 지원 프로세스 89
2.4.1 관리 프로세스 90
2.4.2 품질 보증 프로세스 91
2.4.3 형상 관리 프로세스 94
2.5 방법론 89
2.5.1 구조적 방법론 90
2.5.2 객체지향 방법론
2.5.3 애자일 방법론
객관식 연습문제 98
주관식 연습문제 103
3장 계획 105
3.1 프로젝트 범위 109
3.2 노력 추정 111
3.2.1 노력 추정의 불확실성 113
3.2.2 규모 기반 모델 114
3.2.3 COCOMO II 모델 120
3.2.4 기능 점수
3.3 일정 계획 127
3.3.1 작업 분해 128
3.3.2 CPM 네트워크 129
3.3.3 간트 차트 132
3.3.4 애자일 계획
3.4 조직 계획 135
3.4.1 책임 프로그래머 팀 137
3.4.2 에고레스 팀 138
3.4.3 계층적 팀 139
3.5 위험 관리 141
3.5.1 위험 파악
3.5.2 위험 분석과 순위 정하기
3.5.3 위험 해결과 모니터링
3.6 계획서 작성과 도구 144
3.6.1 계획서 작성
3.6.2 도구
객관식 연습문제 146
주관식 연습문제 152
4장 요구 분석 155
4.1 요구 158
4.1.1 요구의 종류 158
4.1.2 요구 추출의 어려움 159
4.2 요구 추출 161
4.2.1 요구 정보 출처 163
4.2.2 요구 추출 방법 163
4.2.3 요구와 제한의 정의 166
4.3 도메인 분석 170
4.3.1 도메인 정의 172
4.3.2 도메인 분석 178
4.4 사용 사례 191
4.4.1 사용 사례의 소개 192
4.4.2 사용 사례 다이어그램 194
4.4.3 액터 찾기 195
4.4.4 사용 사례 찾기 200
4.4.5 사용 사례 관계 찾기
4.5 요구 분석 명세서 203
4.5.1 명세서 작성 203
4.5.2 명세서 검토 206
객관식 연습문제 208
주관식 연습문제 213
4.6 요구 관리 도구
5장 모델링 269
5.1 객체지향 개념 272
5.1.1 객체지향의 장점 278
5.1.2 객체지향과 절차적 방법의 비교
5.1.3 클래스와 객체
5.1.4 객체와 속성
5.1.5 캡슐화
5.1.6 연관
5.1.7 집합
5.1.8 상속
5.1.9 다형성
5.2 UML 277
5.2.1 배경과 역사 278
5.2.2 UML 다이어그램 280
5.2.3 UML 모델링 과정 281
5.3 정적 모델링 287
5.3.1 클래스의 표현 296
5.3.2 관계의 표현 297
5.3.3 클래스 다이어그램 작성 과정 300
5.4.4 클래스 찾기 304
5.4.5 연관 찾기 306
5.4.6 속성 추가 308
5.5 동적 모델링 310
5.5.1 시퀀스 다이어그램의 요소 310
5.5.2 시퀀스 다이어그램 작성 315
5.5.3 상태 다이어그램 317
5.5.4. 액티비티 다이어그램
5.6 모델링 도구 320
객관식 연습문제 328
주관식 연습문제 334
6장 아키텍처 설계 215
6.1 아키텍처 설계란? 218
6.1.1 아키텍처 설계의 정의
6.1.2 아키텍처 설계의 중요성
6.1.3 아키텍처와 비기능적 요구
6.1.4 아키텍처의 표현
6.2 설계 원리 222
6.2.1 단계적 분할 224
6.2.2 추상화 226
6.2.3 모듈화 228
6.3 아키텍처 설계 과정 233
6.3.1 설계 목표 설정 237
6.3.2 시스템의 타입 244
6.3.3 아키텍처의 표현 246
6.4 아키텍처 스타일 250
6.4.1 계층 구조 스타일 250
6.4.2 클라이언트 서버 스타일 252
6.4.3 트랜젝션 처리 스타일
6.4.4 MVC 스타일
6.4.5 이벤트 중심 스타일
6.4.6 객체 영속 스타일
6.5 미들웨어 아키텍처 258
6.5.1 미들웨어 기술의 분류
6.5.2 분산 객체
6.5.3 메시지 중심 미들웨어
6.5.4 애플리케이션 서버
6.6 설계 문서화
객관식 연습문제 261
주관식 연습문제 266
7장 상세 설계 337
7.1 디자인 패턴 340
7.1.1 팩토리 메소드 패턴 340
7.1.2 추상 팩토리 패턴 344
7.1.3 어뎁터 패턴
7.1.4 싱글톤 패턴
7.1.5 컴포지트 패턴
7.1.6 반복자 패턴
7.1.7 옵서버 패턴
7.1.8 상태 패턴
7.1.9 퍼싸드 패턴
7.2 클래스 설계 350
7.2.1 클래스 인터페이스의 정의 350
7.2.2 클래스 상태 모델링 352
7.2.3 클래스 재사용 353
7.3 사용자 인터페이스 설계 357
7.3.1 사용자 인터페이스 유형 358
7.3.2 사용자 인터페이스 설계 원리 359
7.3.3 화면 설계 361
7.3.4 출력물 설계 368
7.4 데이터 설계 372
7.4.1 객체와 테이블 373
객관식 연습문제 379
주관식 연습문제 384
8장 코딩 387
8.1 코딩 원리 390
8.1.1 코딩 과정 390
8.1.2 코딩 오류 392
8.1.3 구조적 프로그래밍 396
8.1.4 정보 은닉 398
8.1.5 중복 회피
8.1.6 디메테르의 법칙
8.2 코딩 스타일 400
8.2.1 명명 규칙 400
8.2.2 포인터와 레퍼런스 408
8.2.3 자료형 409
8.2.4 문장과 수식 410
8.2.5 오류처리 412
8.2.6 코드 문서화 413
8.3 UML과 코딩
8.3.1 클래와 인터페이스의 구현
8.3.2 연관의 구현
8.3.3 시퀀스 다이어그램의 구현
8.3.4 상태 다이어그램의 구현
8.4 리팩토링 417
8.4.1 기본 개념 417
8.4.2 리팩토링의 사례 420
8.4.3 리팩토링 과정 421
8.4.4 코드 스멜 422
8.5 코드 품질 향상 기법 425
8.5.1 코드 인스펙션 425
8.5.2 정적 분석 427
8.5.3 페어 프로그래밍 430
객관식 연습문제 433
주관식 연습문제 438
9장 테스팅 441
9.1 테스팅 기초 443
9.1.1 오류, 결함, 고장 443
9.1.2 테스팅 원리 444
9.1.3 테스트 작업 과정 445
9.1.4 테스트 케이스 447
9.2 블랙 박스 테스팅 449
9.2.1 동치 클래스 분해 449
9.2.2 경계값 분석 452
9.2.3 원인과 결과 그래프 453
9.3 화이트 박스 테스팅 459
9.3.1 논리 흐름의 표현 459
9.3.2 기본 경로 테스팅 464
9.3.3 싸이클로매틱 복잡도 465
9.3.4 반복문의 테스팅 467
9.4 객체지향 테스팅 470
9.4.1 사용 사례 기반 테스팅 471
9.4.2 상태 기반 테스팅 472
9.5 통합 테스팅
9.5.1 빅뱅 통합 472
9.5.2 하향식 통합 473
9.5.3 상향식 통합 475
9.5.4 연쇄식 통합 476
9.6 시스템 및 인수 테스트 481
9.6.1 기능 테스트 483
9.6.2 성능 테스트 484
9.6.3 보안 테스트 485
9.6.4 사용자 인터페이스 테스트
9.6.5 인수 테스트
9.7 테스트 도구
9.7.1 코드 분석 도구
9.7.2 테스트 케이스 생성 도구
9.7.3 테스트 케이스 실행 도구
9.7.4 단위 테스트 도구
객관식 연습문제 486
주관식 연습문제 491
10장 유지보수 495
10.1 유지보수의 소개 498
10.1.1 변경해야 하는 이유 499
10.1.2 Lehman의 법칙 501
10.1.3 유지보수의 종류 502
10.2 유지보수 작업 과정 505
10.2.1 유지보수 프로세스 모델 506
10.2.2 프로그램의 이해 509
10.2.3 변경 파악과 분석
10.2.4 형상 변경 관리
10.2.5 변경 구현, 테스팅, 배포
10.3 형상관리 513
10.3.1 베이스라인 514
10.3.2 형상관리의 필요성 515
10.3.3 형상관리 절차
10.4 역공학 518
10.4.1 역공학 작업 순서 518
10.4.2 역공학의 용도 521
10.4.3 재문서화
10.4.4 설계 복구
10.5 리엔지니어링
10.5.1 리엔지니어링의 목적
10.5.2 리엔지니어링 과정
10.6 유지보수 도구
객관식 연습문제 525
주관식 연습문제 529
11장 품질 보증 531
11.1 소프트웨어 품질 533
11.1.1 품질의 의미 533
11.1.2 품질 속성 535
11.1.3 소프트웨어 유형과 품질 537
11.2 품질 특성과 메트릭 540
11.2.1 품질 측정과 메트릭의 유용성 541
11.2.2 전통적인 품질 메트릭 542
11.2.3 객체지향 소프트웨어의 품질 메트릭 543
11.3 품질 보증 활동 544
11.3.1 품질 보증 조직 544
11.3.2 프로세스와 표준 정의 550
11.3.3 품질 관리
11.4 확인 및 검증 기법 554
11.4.1 인스펙션 554
11.4.2 워크스루 555
11.4.3 동료검토 556
11.5 프로세스 개선 559
11.5.1 CMM 559
11.5.2 ISO 9001 560
11.6 품질 보증 도구
객관식 연습문제 566
주관식 연습문제 570
부록 A 도구
부록 B 용어 사전
참고 문헌
이 책은 소프트웨어 분야에서 일하고 싶은 사람들에게 꼭 필요한 다음과 같은 다양한 지식과 기술이 담겨져 있다.
• 소프트웨어 프로세스 ― 소프트웨어 개발 작업은 어떤 작업을 어떤 절차로 하였는지가 매우 중요하다. 경험에 의하여 좋은 프로세스라고 알려진 모델을 잘 이해하고 어떤 경우에 적용하는지 알아야 한다.
• 프로젝트 계획 ― 초보자에게는 어려운 내용이지만 프로젝트의 경험이 쌓이면 프로젝트 팀의 리더로 프로젝트를 계획하고 관리하는 능력이 필요하다. 예상 작업과 규모를 파악하여 기간을 산정하고 예산을 추정해 보는 것과 팀 조직을 구성하고 위험 요소를 미리 파악하여 대비하는 일이 포함되어 있다.
• 요구 분석 ― 소프트웨어 개발 초기에 사용자의 요구를 파악하고 이를 잘 분석하여 정리하는 작업이다.
• 모델링 및 설계 ― 객체지향 프로그래밍이 널리 쓰이면서 분석과 설계 방법을 알아야 한다. 특히 객체지향 설계 방법을 배울 때 간과하기 쉬운 모델 작성 순서, 코드와 설계의 매핑 등을 다루어 초보자도 객체지향 설계를 쉽게 이해할 수 있도록 기술하였다.
• 코딩과 테스팅 기법 ― 협력하여 프로그래밍하려면 문법을 이해하는 것 이외에도 코드 표준을 잘 따르는 것이 중요하다. 또한 릴리스하기 전 프로그램의 오류를 효율적으로 발견하기 위한 테스팅 기법도 알아야 한다.
• 유지보수와 품질 보증 기술 ― 소프트웨어가 릴리스 된 후 어떤 작업이 필요한지 소프트웨어의 품질을 높이기 위한 기법에는 어떤 것이 있는지 소개하였다.
• 소프트웨어 도구 ― 소프트웨어 엔지니어로 일하기 위하여 기본적으로 다루어야 하는 도구의 설치와 사용법을 설명하였다.
이 책의 목표는 복잡하고 빠르게 발전하는 최신의 소프트웨어 개발 기술을 알기 쉽게 설명하려는 것이다. 소프트웨어 공학이라는 제목의 책들을 살펴보면 국내 서적과 외국 서적으로 나눌 수 있다. 대부분의 국내 서적은 적절한 시기에 개정판을 내지 못하여 최신 기술을 다루지 못하고 있고 외국 서적은 실무 적용과는 거리가 있는 이론 중심의 책이 많다. 1994년 초판을 발행한 이 책은 여섯 차례의 개정을 통하여 첨단 소프트웨어 기술을 잘 다루고 있고 많은 독자들의 사랑을 받아 왔다.
특히 저자는 20년 이상 대학 강단에서 소프트웨어 공학 과목을 가르치면서 소프트웨어 엔지니어링 원리가 이론이나 지식에 머물지 않고 실제 소프트웨어 개발 현장에서 활용될 수 있는 스킬이 되어야 한다고 강조해 왔다. 이런 맥락에서 소프트웨어 엔지니어링 교과서에 담기는 내용은 실용성 있는 최신의 Best Practice가 담겨야 한다고 생각한다.
작가정보
저자(글) 최은만
현재 동국대학교 컴퓨터공학과 교수로 재직 중이며 S/W 공학, 객체지향 설계, S/W 품질 및 테스팅, 관점지향 프로그래밍 등을 연구하며 가르치고 있다. 저서로 『새로 쓴 소프트웨어 공학』(정익사, 2014), 『객체지향 소프트웨어 공학』(한빛아카데미, 2017), 『UML로 배우는 시스템 분석 설계』(생능출판사, 2018), 『소프트웨어 공학의 모든 것』(생능출판사, 2020) 등이 있다.
<약력>
KAIST 전산학과(전산학 석사)
미국 일리노이 공과대학 컴퓨터과학과(컴퓨터과학 박사)
한국표준과학연구소 연구원 충남대, 목원대, 한밭대 강사
DACOM 주임연구원
시카고주립대 강사
카네기멜론대학교 소프트웨어공학 단기 연수
콜로라도주립대 컴퓨터과학과 방문 교수
베일러대 컴퓨터과학과 방문 교수
이 상품의 총서
Klover리뷰 (0)
- - e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- - 리워드는 1,000원 이상 eBook, 오디오북, 동영상에 한해 다운로드 완료 후 리뷰 작성 시 익일 제공됩니다. (5,000원 이상 상품으로 변경 예정, 2024년 9월 30일부터 적용)
- - 리워드는 한 상품에 최초 1회만 제공됩니다.
- - sam 이용권 구매 상품 / 선물받은 eBook은 리워드 대상에서 제외됩니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오 발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
구매 후 리뷰 작성 시, e교환권 100원 적립
문장수집
- 구매 후 90일 이내에 문장 수집 등록 시 e교환권 100원을 적립해 드립니다.
- e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- 리워드는 1,000원 이상 eBook에 한해 다운로드 완료 후 문장수집 등록 시 제공됩니다. (5,000원 이상 eBook으로 변경 예정, 2024년 9월 30일부터 적용)
- 리워드는 한 상품에 최초 1회만 제공됩니다.
- sam 이용권 구매 상품 / 선물받은 eBook / 오디오북·동영상 상품/주문취소/환불 시 리워드 대상에서 제외됩니다.
구매 후 문장수집 작성 시, e교환권 100원 적립
신규가입 혜택 지급이 완료 되었습니다.
바로 사용 가능한 교보e캐시 1,000원 (유효기간 7일)
지금 바로 교보eBook의 다양한 콘텐츠를 이용해 보세요!
