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

고객평점
저자홍장의
출판사항한빛아카데미, 발행일:2022/06/10
형태사항p.528 B5판:24
매장위치자연과학부(B2) , 재고문의 : 051-816-9500
ISBN9791156646020 [소득공제]
판매가격 33,000원  
포인트 990점
배송비결제주문시 결제
  • 주문수량 

총 금액 : 0원

책 소개

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


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


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

※ 본 도서는 대학 강의용 교재로 개발되었으므로 연습문제 해답은 제공하지 않습니다.

작가 소개

홍장의

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

목 차

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 문서 틀

역자 소개


01. 반품기한
  • 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
  • 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
02. 반품 배송비
반품 배송비
반품사유 반품 배송비 부담자
단순변심 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다.
상품의 불량 또는 오배송 고객 부담이 아닙니다.
03. 배송상태에 따른 환불안내
환불안내
진행 상태 결제완료 상품준비중 배송지시/배송중/배송완료
어떤 상태 주문 내역 확인 전 상품 발송 준비 중 상품이 택배사로 이미 발송 됨
환불 즉시환불 구매취소 의사전달 → 발송중지 → 환불 반품회수 → 반품상품 확인 → 환불
04. 취소방법
  • 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
  • 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
05. 환불시점
환불시점
결제수단 환불시점 환불방법
신용카드 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) 신용카드 승인취소
계좌이체 실시간 계좌이체 또는 무통장입금
취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준)
계좌입금
휴대폰 결제 당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소
전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준)
당일취소 : 휴대폰 결제 승인취소
익월취소 : 계좌입금
포인트 취소 완료 후, 당일 포인트 적립 환불 포인트 적립
06. 취소반품 불가 사유
  • 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
  • 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
  • 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
  • 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
  • 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
  • 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.

환불불가
상품군 취소/반품 불가사유
의류/잡화/수입명품 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우
계절상품/식품/화장품 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우
가전/설치상품 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.)
자동차용품 상품을 개봉하여 장착한 이후 단순변심의 경우
CD/DVD/GAME/BOOK등 복제가 가능한 상품의 포장 등을 훼손한 경우
내비게이션, OS시리얼이 적힌 PMP 상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우
노트북, 테스크탑 PC 등 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우