000 | 00000cam c2200205 c 4500 | |
001 | 000046134088 | |
005 | 20221114181443 | |
007 | ta | |
008 | 221114s2022 ulkad b 001 kor | |
020 | ▼a 9791156646020 ▼g 93000 | |
035 | ▼a (KERIS)BIB000016562837 | |
040 | ▼a 011001 ▼c 011001 ▼d 211009 | |
082 | 0 4 | ▼a 005.1 ▼2 23 |
085 | ▼a 005.1 ▼2 DDCK | |
090 | ▼a 005.1 ▼b 2022z12 | |
100 | 1 | ▼a 홍장의, ▼g 洪長義, ▼d 1965- ▼0 AUTH(211009)147497 |
245 | 1 0 | ▼a 소프트웨어 공학의 이론과 실제 / ▼d 홍장의 지음 |
260 | ▼a 서울 : ▼b 한빛아카데미, ▼c 2022 | |
300 | ▼a 528 p. : ▼b 삽화, 도표 ; ▼c 24 cm | |
490 | 1 0 | ▼a IT cookbook |
500 | ▼a 부록: 문서 틀 | |
504 | ▼a 참고문헌(p. 511-523)과 색인수록 | |
830 | 0 | ▼a IT cookbook |
945 | ▼a ITMT |
Holdings Information
No. | Location | Call Number | Accession No. | Availability | Due Date | Make a Reservation | Service |
---|---|---|---|---|---|---|---|
No. 1 | Location Science & Engineering Library/Sci-Info(Stacks1)/ | Call Number 005.1 2022z12 | Accession No. 121261672 | Availability Available | Due Date | Make a Reservation | Service |
No. 2 | Location Science & Engineering Library/Sci-Info(Stacks1)/ | Call Number 005.1 2022z12 | Accession No. 521007308 | Availability Available | Due Date | Make a Reservation | Service |
Contents information
Book Introduction
소프트웨어 개발 프로젝트를 성공으로 이끄는 소프트웨어 엔지니어가 될 수 있도록 소프트웨어 공학 핵심 이론과 실무 적용을 충실하게 담은 지침서다. 실습을 통해 핵심 개념을 확실히 다지고 프로젝트를 통해 소프트웨어 개발 라이프사이클에 따라 점진적으로 단계별 활동을 수행할 수 있도록 구성하였다.
34개 실습과 13개 프로젝트로 배운다!
품질 좋은 소프트웨어를 개발하려면 실효성 있는 방법론과 우수한 도구도 필요하지만, 그보다 더 중요한 것은 지식과 기술을 겸비한 우수한 소프트웨어 엔지니어입니다.
이 책은 소프트웨어 개발 프로젝트를 성공으로 이끄는 소프트웨어 엔지니어가 될 수 있도록 소프트웨어 공학 핵심 이론과 실무 적용을 충실하게 담은 지침서입니다. 실습을 통해 핵심 개념을 확실히 다지고 프로젝트를 통해 소프트웨어 개발 라이프사이클에 따라 점진적으로 단계별 활동을 수행할 수 있도록 다음과 같이 구성하였습니다.
※ 본 도서는 대학 강의용 교재로 개발되었으므로 연습문제 해답은 제공하지 않습니다.
Information Provided By: :

Author Introduction
홍장의(지은이)
카이스트에서 전산학 박사 학위를 취득했습니다. 현재 충북대학교 소프트웨어학부 교수로 재직 중이며 소프트웨어지능공학 연구실을 운영하고 있습니다. 국방과학연구소에서 선임연구원으로 재직 시 국방 소프트웨어 개발 프로젝트에 참여하였으며, (주) 솔루션링크 기술연구소장으로 재직 시 소프트웨어 품질 및 소프트웨어 개발 방법에 대한 컨설팅을 수행하였습니다. 또한 삼성전자, LG전자, SK 텔레콤 등에서 소프트웨어 공학 관련 강의를 다수 진행하였습니다. 과학기술정보통신부의 국가기술지도 작성에 참여하였으며, 한국정보과학회 소프트웨어공학 소사이어티의 회장을 역임하였습니다.

Table of Contents
Chapter 01 소프트웨어 공학 개요 01 소프트웨어 고장 사례 02 소프트웨어 위기 03 소프트웨어 공학 기술의 적용 1 소프트웨어 공학적 기법의 종류 2 소프트웨어 공학의 정의와 원리 연습문제 [프로젝트 I] 프로젝트 정의서 작성하기 Chapter 02 소프트웨어 품질 01 소프트웨어 품질의 중요성 02 소프트웨어 품질 요소 1 외적 품질 요소 2 내적 품질 요소 3 프로세스 품질 03 인공지능 소프트웨어 품질 1 전통적인 소프트웨어와의 차이점 2 인공지능 소프트웨어의 품질 특성 3 시스템 관점별 품질 요소 04 소프트웨어 품질 모델 및 표준 1 McCall의 FCM 모델 2 HP의 FURPS 모델 3 ISO 9126 품질 모델 4 ISO 25010 품질 모델 05 소프트웨어 품질 관리 1 정량적 품질 개선 2 정보 저장소 3 예측적 품질 관리 연습문제 [실습 2-1] 스테이크홀더Stakeholder의 기대치 식별하기 [실습 2-2] 새로운 품질 요소 설계하기 [프로젝트 II] 대상 시스템 품질 요소 추정하기 Chapter 03 소프트웨어 개발 프로세스 01 실현 가능성 분석 02 전통적인 소프트웨어 프로세스 03 애자일 및 XP 프로세스 1 신속한 소프트웨어 개발 2 애자일: XP 프로세스 3 애자일: 스크럼 프로세스 4 Chaos와 DevOps 04 소프트웨어 프로세스 개선 1 CMM과 CMMI 2 SPICE & A-SPICE 3 식스 시그마 4 기타 프로세스 표준 연습문제 [실습 3-1] 스크럼 이해하기 [실습 3-2] A-SPICE 생각해보기 [프로젝트 III] 프로세스 모델 선정하기 Chapter 04 DevOps 01 DevOps 개요 02 DevOps 프로세스와 프랙티스 1 DevOps 성공 전략 2 DevOps 프로세스 3 DevOps Toolchain 4 DevOps와 클라우드 5 DevOps 측정 척도 03 DevOps 변형들 1 DevSecOps 2 DevDataOps 3 BizDevOps 4 DevOps와 기술 부채 연습문제 [실습 4-1] 린 원리 적용하기 [실습 4-2] DevOps 도구 설치해보기 [실습 4-3] 용어의 의미 이해하기: 마이크로서비스 Chapter 05 프로젝트 관리 01 프로젝트 관리 필요성 1 프로젝트 관리의 정의 2 프로젝트 관리 단계 3 프로젝트 관리의 실패 원인 02 프로젝트 관리 기법 1 일정 관리 기법 2 비용 관리 기법 3 위험 관리 03 프로젝트 조직 1 프로젝트 팀 구조 2 전사적 운영 조직 04 프로젝트 관리 계획서 05 프로젝트 지원 도구 1 프로젝트 관리 기능 2 PMO 도구 3 엔지니어링 도구 연습문제 [실습 5-1] 작업 분할도 작성해보기 [실습 5-2] 팀 구성 방법 생각해보기 [프로젝트 IV] 프로젝트 관리 계획서 작성하기 Chapter 06 소프트웨어 비용 산정 01 기능 점수 개요 1 소프트웨어 비용과 기능 점수 2 기능 점수 구성 요소 02 기능 점수 산정 절차 1 단계 1: 기능 점수 산정 유형Type 결정 2 단계 2: 범위 및 경계Boundary 선정 3 단계 3: 데이터 기능 산출 및 복잡도 식별 4 단계 4: 처리 기능 산출 및 복잡도 식별 5 단계 5: 예비 기능 점수 산정 6 단계 6: 조정 인자 값 산출 7 단계 7: 최종 기능 점수 산출 03 정규법과 간이법 1 간이법 산정 절차 2 간이법 단계별 산정 04 기능 점수 활용 1 기능 점수와 프로그래밍 언어 2 기능 점수와 품질 척도 연습문제 [실습 6-1] 데이터 기능 산정하기 [실습 6-2] 조정 인자 값 산출을 위한 시스템 특성 평가하기 [실습 6-3] 간이법에 의한 데이터 및 처리 기능 카운트하기 [프로젝트 V] 프로젝트의 기능 점수 산정해보기 Chapter 07 요구사항 도출 01 요구사항 개요 02 요구사항 수집 기법 1 대면 수집 방법 2 비대면 수집 방법 03 요구사항 정의서 작성 연습문제 [실습 7-1].문서 편집기의 요구사항 정의 품질 분석하기 [실습 7-2] 요구사항 수집을 위한 인터뷰 질문 작성하기 [실습 7-3] 요구사항 정리해보기 [프로젝트 VI] 요구사항 정의서 작성하기 Chapter 08 객체지향 분석 01 객체지향과 UML 02 기능 모델링 1 기능 모델링 개요 2 유스 케이스 다이어그램 3 유스 케이스 설명서 03 구조 모델링 1 객체 식별 2 클래스 명세 3 클래스 다이어그램 작성 04 행위 모델링 1 순차 다이어그램 구성 요소 2 순차 다이어그램 작성 3 상태기계 다이어그램 작성 05 분석 산출물 점검 연습문제 [실습 8-1] SysML 알아보기 [실습 8-2] 클래스 다이어그램 작성해보기 [실습 8-3] 산출물 간의 일관성 점검해보기 [프로젝트 VII] 대상 시스템의 요구사항 분석하기 Chapter 09 모듈화 설계 01 모듈화 설계 개요 02 결합력의 이해 1 메시지 결합력Message Coupling 2 데이터 결합력Data Coupling 3 스탬프 결합력Stamp Coupling 4 제어 결합력Control Coupling 5 외부 결합력External Coupling 6 공유 결합력Common Coupling 7 내용 결합력Content Coupling 03 응집력의 이해 1 기능 응집력Functional Cohesion 2 순차 응집력Sequential Cohesion 3 교환 응집력Communicational Cohesion 4 절차 응집력Procedural Cohesion 5 시간 응집력Temporal Cohesion 6 논리 응집력Logical Cohesion 7 우연 응집력Coincidental Cohesion 04 모듈화 응용 기술 1 모듈화와 소모 전력Software Energy Consumption 2 모듈화와 기술 부채Technical debt 연습문제 [실습 9-1] 코드 개선을 통한 결합력 높이기 [실습 9-2] 코드 개선을 통한 응집력 높이기 Chapter 10 설계 패턴 01 설계 패턴 개요 02 생성 패턴 1 Abstract Factory 2 Builder 3 Factory Method 4 Prototype 5 Singleton 03 구조 패턴 1 Adapter 2 Bridge 3 Composite 4 Decorator 5 Facade 6 Flyweight 7 Proxy 04 행위 패턴 1 Chain of Responsibility 2 Command 3 Interpreter 4 Iterator 5 Mediator 6 Memento 7 Observer 8 State 9 Strategy 10.Template Method 11.Visitor 연습문제 [실습 10-1] 설계 패턴 적용하기 [프로젝트 VIII] 산출물에 설계 패턴 적용하기 Chapter 11 객체지향 설계 01 설계 원리 02 패키지 다이어그램 1 패키지 다이어그램 생성 2 계층화된 아키텍처 생성 03 자료 구조 설계 04 사용자 인터페이스 설계 1 인터페이스 설계 절차 2 인터페이스 클래스 설계 05 물리 구조 설계 1 배치 다이어그램 작성 2 기술 환경 명세 연습문제 [실습 11-1] 클래스 다이어그램에서 데이터베이스 스키마 설계하기 [실습 11-2] 시스템의 물리적 아키텍처 이해하기 [프로젝트 IX] 대상 시스템 설계하기 Chapter 12 인스펙션 01 인스펙션의 중요성 02 인스펙션 참여자 03 인스펙션 절차 1 스텝 1: 계획 활동 2 스텝 2: 오버뷰 활동 3 스텝 3: 준비 활동 4 스텝 4: 인스펙션 미팅 활동 5 스텝 5: 제3의 시간 활동 6 스텝 6: 재작업 활동 7 스텝 7: 후속 활동 8 인스펙션에 대한 평가 04 소프트웨어 리뷰 활동 연습문제 [실습 12-1] 산출물 오류 타입 정의하기 [프로젝트 X] 프로젝트 산출물에 대한 인스펙션 수행하기 Chapter 13 코딩 01 프로그래밍 언어 유형 02 좋은 코딩 기법 1 좋은 소프트웨어 코드의 6가지 공통점 2 좋은 코드 작성을 위한 규칙 03 코딩 가이드라인 1 MISRA-C 코딩 표준 2 시큐어 코딩 04 오픈 소스 기반 개발 1 오픈 소스 기반 개발 프로세스 2 오픈 소스 활용 시 주의 사항 3 오픈 소스 활용 환경 연습문제 [실습 13-1] 프로그래밍 언어 조사하기 [실습 13-2] 좋은 소프트웨어 코드의 특징 살펴보기 [실습 13-3] 내 코딩 스타일 되돌아보기 [실습 13-4] 오픈 소스 검색 도구 설치해보기 [프로젝트 XI] 프로젝트 대상 시스템 코딩하기 Chapter 14 화이트박스 테스트 01 테스트 개요 02 코드 기반 테스트 케이스 생성 기법 1 제어 흐름 그래프 2 경로 기반 테스트 케이스 생성 03 오류 기반 테스트 04 동적 심볼릭 테스트 1 기호 실행 2 콘콜릭 실행 연습문제 [실습 14-1] 제어 흐름 그래프 작성해보기 [실습 14-2] 선택 정렬 알고리즘에 대한 분기 커버리지 찾기 [프로젝트 XII] 프로젝트 개발 코드에 대하여 화이트박스 테스트 실행하기 Chapter 15 블랙박스 테스트 01 블랙박스 테스트 개요 02 기능 기반 테스트 케이스 생성 기법 1 동치 분할 기법 2 경계치 커버리지 분석 3 특수치 커버리지 분석 4 원인 결과 커버리지 분석 5 블랙박스 테스트 케이스 생성 예제 03 시나리오 기반 테스트 1 테스트 시나리오 생성 방법 2 테스트 시나리오 생성 예제 3 아웃라인 방법에 의한 테스트 케이스 생성 4 유스 케이스 방법에 의한 테스트 케이스 생성 04 테스트 단계 1 단위 테스트 2 통합 테스트 3 시스템 테스트 4 인수 테스트 5 회귀 테스트 연습문제 [실습 15-1] 동치 분할하기 [실습 15-2] 의사결정 테이블 생성해보기 [프로젝트 XIII] 프로젝트 개발 코드에 대하여 블랙박스 테스트 실행하기 Chapter 16 소프트웨어 개발 적용 기술 01 형상 관리 1 형상 관리 정의 2 형상 관리 절차 02 코드 리팩토링 3 관점지향 프로그래밍 4 탐색기반 소프트웨어 공학 1 탐색기반 소프트웨어 공학의 의미 2 탐색기반 소프트웨어 공학의 적용 연습문제 [실습 16-1] 형상 관리를 위한 산출물 이름 체계 정하기 [실습 16-2] 코드 리팩토링이 필요 없는 클린 코드의 조건 알아보기 [실습 16-3] 관점지향 프로그래밍에서 어드바이스 이해하기 [실습 16-4] 솔루션 탐색을 위한 유전 알고리즘 이해하기 Appendix 문서 틀 참고문헌 찾아보기