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

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

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

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

홍장의

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

목차

Chapter01소프트웨어공학개요
01소프트웨어고장사례
02소프트웨어위기
03소프트웨어공학기술의적용
1소프트웨어공학적기법의종류
2소프트웨어공학의정의와원리
연습문제
[프로젝트I]프로젝트정의서작성하기

Chapter02소프트웨어품질
01소프트웨어품질의중요성
02소프트웨어품질요소
1외적품질요소
2내적품질요소
3프로세스품질
03인공지능소프트웨어품질
1전통적인소프트웨어와의차이점
2인공지능소프트웨어의품질특성
3시스템관점별품질요소
04소프트웨어품질모델및표준
1McCall의FCM모델
2HP의FURPS모델
3ISO9126품질모델
4ISO25010품질모델
05소프트웨어품질관리
1정량적품질개선
2정보저장소
3예측적품질관리
연습문제
[실습2-1]스테이크홀더Stakeholder의기대치식별하기
[실습2-2]새로운품질요소설계하기
[프로젝트II]대상시스템품질요소추정하기

Chapter03소프트웨어개발프로세스
01실현가능성분석
02전통적인소프트웨어프로세스
03애자일및XP프로세스
1신속한소프트웨어개발
2애자일:XP프로세스
3애자일:스크럼프로세스
4Chaos와DevOps
04소프트웨어프로세스개선
1CMM과CMMI
2SPICE&A-SPICE
3식스시그마
4기타프로세스표준
연습문제
[실습3-1]스크럼이해하기
[실습3-2]A-SPICE생각해보기
[프로젝트III]프로세스모델선정하기

Chapter04DevOps
01DevOps개요
02DevOps프로세스와프랙티스
1DevOps성공전략
2DevOps프로세스
3DevOpsToolchain
4DevOps와클라우드
5DevOps측정척도
03DevOps변형들
1DevSecOps
2DevDataOps
3BizDevOps
4DevOps와기술부채
연습문제
[실습4-1]린원리적용하기
[실습4-2]DevOps도구설치해보기
[실습4-3]용어의의미이해하기:마이크로서비스

Chapter05프로젝트관리
01프로젝트관리필요성
1프로젝트관리의정의
2프로젝트관리단계
3프로젝트관리의실패원인
02프로젝트관리기법
1일정관리기법
2비용관리기법
3위험관리
03프로젝트조직
1프로젝트팀구조
2전사적운영조직
04프로젝트관리계획서
05프로젝트지원도구
1프로젝트관리기능
2PMO도구
3엔지니어링도구
연습문제
[실습5-1]작업분할도작성해보기
[실습5-2]팀구성방법생각해보기
[프로젝트IV]프로젝트관리계획서작성하기

Chapter06소프트웨어비용산정
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]프로젝트의기능점수산정해보기

Chapter07요구사항도출
01요구사항개요
02요구사항수집기법
1대면수집방법
2비대면수집방법
03요구사항정의서작성
연습문제
[실습7-1].문서편집기의요구사항정의품질분석하기
[실습7-2]요구사항수집을위한인터뷰질문작성하기
[실습7-3]요구사항정리해보기
[프로젝트VI]요구사항정의서작성하기

Chapter08객체지향분석
01객체지향과UML
02기능모델링
1기능모델링개요
2유스케이스다이어그램
3유스케이스설명서
03구조모델링
1객체식별
2클래스명세
3클래스다이어그램작성
04행위모델링
1순차다이어그램구성요소
2순차다이어그램작성
3상태기계다이어그램작성
05분석산출물점검
연습문제
[실습8-1]SysML알아보기
[실습8-2]클래스다이어그램작성해보기
[실습8-3]산출물간의일관성점검해보기
[프로젝트VII]대상시스템의요구사항분석하기

Chapter09모듈화설계
01모듈화설계개요
02결합력의이해
1메시지결합력MessageCoupling
2데이터결합력DataCoupling
3스탬프결합력StampCoupling
4제어결합력ControlCoupling
5외부결합력ExternalCoupling
6공유결합력CommonCoupling
7내용결합력ContentCoupling
03응집력의이해
1기능응집력FunctionalCohesion
2순차응집력SequentialCohesion
3교환응집력CommunicationalCohesion
4절차응집력ProceduralCohesion
5시간응집력TemporalCohesion
6논리응집력LogicalCohesion
7우연응집력CoincidentalCohesion
04모듈화응용기술
1모듈화와소모전력SoftwareEnergyConsumption
2모듈화와기술부채Technicaldebt
연습문제
[실습9-1]코드개선을통한결합력높이기
[실습9-2]코드개선을통한응집력높이기

Chapter10설계패턴
01설계패턴개요
02생성패턴
1AbstractFactory
2Builder
3FactoryMethod
4Prototype
5Singleton
03구조패턴
1Adapter
2Bridge
3Composite
4Decorator
5Facade
6Flyweight
7Proxy
04행위패턴
1ChainofResponsibility
2Command
3Interpreter
4Iterator
5Mediator
6Memento
7Observer
8State
9Strategy
10.TemplateMethod
11.Visitor
연습문제
[실습10-1]설계패턴적용하기
[프로젝트VIII]산출물에설계패턴적용하기

Chapter11객체지향설계
01설계원리
02패키지다이어그램
1패키지다이어그램생성
2계층화된아키텍처생성
03자료구조설계
04사용자인터페이스설계
1인터페이스설계절차
2인터페이스클래스설계
05물리구조설계
1배치다이어그램작성
2기술환경명세
연습문제
[실습11-1]클래스다이어그램에서데이터베이스스키마설계하기
[실습11-2]시스템의물리적아키텍처이해하기
[프로젝트IX]대상시스템설계하기

Chapter12인스펙션
01인스펙션의중요성
02인스펙션참여자
03인스펙션절차
1스텝1:계획활동
2스텝2:오버뷰활동
3스텝3:준비활동
4스텝4:인스펙션미팅활동
5스텝5:제3의시간활동
6스텝6:재작업활동
7스텝7:후속활동
8인스펙션에대한평가
04소프트웨어리뷰활동
연습문제
[실습12-1]산출물오류타입정의하기
[프로젝트X]프로젝트산출물에대한인스펙션수행하기

Chapter13코딩
01프로그래밍언어유형
02좋은코딩기법
1좋은소프트웨어코드의6가지공통점
2좋은코드작성을위한규칙
03코딩가이드라인
1MISRA-C코딩표준
2시큐어코딩
04오픈소스기반개발
1오픈소스기반개발프로세스
2오픈소스활용시주의사항
3오픈소스활용환경
연습문제
[실습13-1]프로그래밍언어조사하기
[실습13-2]좋은소프트웨어코드의특징살펴보기
[실습13-3]내코딩스타일되돌아보기
[실습13-4]오픈소스검색도구설치해보기
[프로젝트XI]프로젝트대상시스템코딩하기

Chapter14화이트박스테스트
01테스트개요
02코드기반테스트케이스생성기법
1제어흐름그래프
2경로기반테스트케이스생성
03오류기반테스트
04동적심볼릭테스트
1기호실행
2콘콜릭실행
연습문제
[실습14-1]제어흐름그래프작성해보기
[실습14-2]선택정렬알고리즘에대한분기커버리지찾기
[프로젝트XII]프로젝트개발코드에대하여화이트박스테스트실행하기

Chapter15블랙박스테스트
01블랙박스테스트개요
02기능기반테스트케이스생성기법
1동치분할기법
2경계치커버리지분석
3특수치커버리지분석
4원인결과커버리지분석
5블랙박스테스트케이스생성예제
03시나리오기반테스트
1테스트시나리오생성방법
2테스트시나리오생성예제
3아웃라인방법에의한테스트케이스생성
4유스케이스방법에의한테스트케이스생성
04테스트단계
1단위테스트
2통합테스트
3시스템테스트
4인수테스트
5회귀테스트
연습문제
[실습15-1]동치분할하기
[실습15-2]의사결정테이블생성해보기
[프로젝트XIII]프로젝트개발코드에대하여블랙박스테스트실행하기

Chapter16소프트웨어개발적용기술
01형상관리
1형상관리정의
2형상관리절차
02코드리팩토링
3관점지향프로그