소프트웨어 개발 프로세스는 계획, 분석, 설계, 구현, 테스트, 유지보수의 여섯 가지 주요 활동으로 구성되며, 이 중 분석과 설계는 가장 핵심적인 활동이라 할 수 있다. 분석은 사용자 요구 사항을 깊이 이해하고 파악하여 이를 명확히 정의하는 활동이며, 설계는 이러한 요구를 어떻게 만족시킬지에 대한 구체적인 해결 방안(솔루션)을 도출하고 이를 정의하는 활동이다. 이 두 활동을 제대로 수행하지 않으면, 유지보수 단계에서 심각한 문제가 발생하며 전체 개발 비용이 크게 증가할 수 있다. 이에 따라 소프트웨어 공학자들은 개발 비용을 절감하고 품질 좋은 소프트웨어를 개발하기 위해, 개발 초기 활동인 분석과 설계 단계에서 오류를 조기에 발견할 수 있는 다양한 방법들을 제시해 왔다.
본 서적은 현대의 복잡하고 대규모 시스템 개발에 효과적으로 적용할 수 있는 객체지향 분석/설계 방법과 이를 위한 표준 모델링 언어인 UML(Unified Modeling Language)에 대하여 설명한다. 또한, 객체지향 방법의 이해를 돕기 위해 전통적인 구조적 분석/설계 방법과의 차이점도 함께 다룬다.
제 1부에서는 소프트웨어 공학의 정의와 더불어, 소프트웨어 공학에서 반드시 다루어야 할 세 가지 핵심 주제인 프로세스, 방법, 도구에 대하여 설명한다. 특히, 소프트웨어 개발 프로세스에서 분석과 설계 활동의 중요성을 강조하며, 객체지향 방법의 이해를 위해 클래스, 객체, 상속과 같은 기본 개념과 UML 표기법을 소개한다.
제 2부에서는 다양한 관점에서 시스템을 표현할 수 있는 UML 다이어그램과 표기법을 상세히 설명한다. UML이 시스템의 구조, 행위, 상호작용을 어떻게 모델링 할 수 있는지를 다루며, 각 다이어그램이 실무에서 어떤 역할을 수행하는지 예시를 통해 이해할 수 있도록 구성하였다.
제 3부에서는 객체지향 분석/설계에서 수행되는 주요 작업들에 대하여 설명한다. 특히, 가상의 웹 주문 처리 시스템(WOPS:Web-based Order Processing System) 개발 사례를 통해 UML 다이어그램이 어떻게 요구 분석, 시스템 및 소프트웨어 아키텍처 설계, 객체지향 설계에 사용될 수 있는지를 구체적으로 보여준다.
이번 개정판에서는 다음 두 가지 내용을 중점적으로 강화하였다. 첫째, 객체지향 설계의 품질을 높이기 위한 핵심 원리인 SOLID 원리를 14장에 수록하였다. 이 원리를 적용한 설계는 높은 응집도와 낮은 결합도를 갖는 설계를 가능하게 하여, 재사용성, 유지보수성, 확장성, 유연성, 가독성, 테스트성을 향상시킬 수 있다. 둘째, 객체지향 분석 및 설계의 결과물인 UML 다이어그램이 자바 코드로 어떻게 구현 되는지 다양한 예제를 통해 제시하였다. 이를 통해 UML모델과 실제 코드 사이의 연결 고리를 명확히 하여, 이론과 실무를 유기적으로 연계할 수 있도록 하였다.
높은 생산성과 품질 좋은 시스템 개발을 위해 체계적인 프로세스와 올바른 방법의 적용이 무엇보다 중요하다. 객체지향 방법을 바탕으로 시스템을 체계적이고 정확히 분석하고 설계하며, 그 결과를 UML로 명확하게 시각화하고 문서화할 수 있다면, 이 책이 추구하는 목표는 충분히 이루어졌다고 믿는다.
끝으로 본 서적이 완성되기까지 언제나 곁에서 따뜻한 응원과 격려를 보내준 경미, 현우, 혜진, 지은에게 깊은 감사를 전한다.
patr 01 소개
chapter 01 소프트웨어 공학 소개
1.1 소프트웨어 공학 정의
1.2 소프트웨어 공학 기술 발전
1.3 소프트웨어 공학 3가지 주제
연습 문제
chapter 02 소프트웨어 개발 프로세스
2.1 소개
2.2 프로세스 모델
2.3 프로세스 모델 비교
2.4 기타 프로세스 모델
2.5 분석/설계 중요성
연습 문제
chapter 03 객체지향과 UML
3.1 소개
3.2 객체지향 개념
3.3 모델과 모델링
3.4 UML 모델링
3.5 UML 역사
3.6 UML 다이어그램 분류
3.7 UML 모델링 도구
연습 문제
patr 02 UML 다이어그램
chapter 04 구조 다이어그램
4.1 클래스 다이어그램
4.2 객체 다이어그램
4.3 패키지 다이어그램
4.4 컴포넌트 다이어그램
4.5 배치 다이어그램
연습 문제
chapter 05 행위 다이어그램
5.1 사용사례 다이어그램
5.2 활동 다이어그램
5.3 상태기계 다이어그램
연습 문제
chapter 06 상호작용 다이어그램
6.1 순서 다이어그램
6.2 통신 다이어그램
연습문제
chapter 07 UML 확장
7.1 소개
7.2 스테레오 타입
7.3 태그 정의
7.4 제약 조건
7.5 프로파일
연습 문제
part 03 객체지향 분석/설계
chapter 08 요구 공학
8.1 소개
8.2 요구 추출
8.3 요구 분석
8.4 요구 명세
8.5 요구 검증
8.6 요구 명세 표준
연습 문제
chapter 09 객체지향 분석 방법
9.1 소개
9.2 요구 추출
9.3 요구 분석
9.4 요약
연습 문제
chapter 10 설계 개요
10.1 소개
10.2 설계 원리
10.3 설계 명세
10.4 설계 방법
연습 문제
chapter 11 시스템 아키텍처 설계
11.1 소개
11.2 시스템 아키텍처 패턴
11.3 WOPS 시스템 아키텍처
연습 문제
chapter 12 객체지향 설계 방법
12.1 소개
12.2 설계 품질
12.3 설계 절차
12.4 요약
연습 문제
chapter 13 설계 패턴
13.1 소개
13.2 설계 패턴 분류
13.3 Singleton 패턴
13.4 Adaptor 패턴
13.5 Template Method 패턴
13.6 Observer 패턴
연습 문제
chapter 14 SOLID 원리
14.1 소개
14.2 단일 책임 원리(SRP)
14.3 개방 폐쇄 원리(OCP)
14.4 리스코프 치환 원리(LSP)
14.5 인터페이스 분리 원리(ISP)
14.6 의존 역전 원리(DIP)
연습 문제
chapter 15 상세 설계
15.1 소개
15.2 상세 설계 명세 도구
연습 문제
연습문제 해답
참고 문헌
찾아 보기