HOME > 상세정보

상세정보

소프트웨어 공학의 이론과 실제

자료유형
단행본
개인저자
홍장의, 洪長義, 1965-
서명 / 저자사항
소프트웨어 공학의 이론과 실제 / 홍장의 지음
발행사항
서울 :   한빛아카데미,   2022  
형태사항
528 p. : 삽화, 도표 ; 24 cm
총서사항
IT cookbook
ISBN
9791156646020
일반주기
부록: 문서 틀  
서지주기
참고문헌(p. 511-523)과 색인수록
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

소장정보

No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.1 2022z12 등록번호 121261672 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 2 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.1 2022z12 등록번호 521007308 도서상태 대출가능 반납예정일 예약 서비스 B M

컨텐츠정보

책소개

소프트웨어 개발 프로젝트를 성공으로 이끄는 소프트웨어 엔지니어가 될 수 있도록 소프트웨어 공학 핵심 이론과 실무 적용을 충실하게 담은 지침서다. 실습을 통해 핵심 개념을 확실히 다지고 프로젝트를 통해 소프트웨어 개발 라이프사이클에 따라 점진적으로 단계별 활동을 수행할 수 있도록 구성하였다.

34개 실습과 13개 프로젝트로 배운다!

품질 좋은 소프트웨어를 개발하려면 실효성 있는 방법론과 우수한 도구도 필요하지만, 그보다 더 중요한 것은 지식과 기술을 겸비한 우수한 소프트웨어 엔지니어입니다.

이 책은 소프트웨어 개발 프로젝트를 성공으로 이끄는 소프트웨어 엔지니어가 될 수 있도록 소프트웨어 공학 핵심 이론과 실무 적용을 충실하게 담은 지침서입니다. 실습을 통해 핵심 개념을 확실히 다지고 프로젝트를 통해 소프트웨어 개발 라이프사이클에 따라 점진적으로 단계별 활동을 수행할 수 있도록 다음과 같이 구성하였습니다.
※ 본 도서는 대학 강의용 교재로 개발되었으므로 연습문제 해답은 제공하지 않습니다.


정보제공 : Aladin

저자소개

홍장의(지은이)

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

정보제공 : Aladin

목차

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 문서 틀
참고문헌
찾아보기

관련분야 신착자료

Wong, David (2023)
Blandy, Jim (2023)