UML을 활용한 객체지향 분석 설계 [Object-Oriented Analysis and Design with Applications Third Edition]
- 원서명Object-Oriented Analysis and Design with Applications Third Edition (ISBN 9780201895513)
- 지은이그래디 부치, 로버트 막심처크, 마이클 잉글, 바비 영, 짐 코낼런, 켈리 휴스톤
- 옮긴이박현철, 임춘봉, 박경민
- ISBN : 9788960773905
- 48,000원
- 2013년 01월 31일 펴냄 (절판)
- 페이퍼백 | 728쪽 | 188*250mm
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
객체지향 구루(Guru)들이 표준 UML 2.0을 기반으로 근본적인 객체지향 세계의 이해부터 대규모 시스템 개발에 이르기까지 소프트웨어 개발에 필요한 다양한 내용을 명확하게 제시한 책이다. 현실 세계를 사용자 관점으로 표현해주고, IT가 만들어내는 새로운 세상에 맞게 시장에서 필요로 하는 비즈니스 로직을 시각화 해주는 UML 속에 IT 리더가 되는 길이 숨어있다. 아이폰 게임 개발을 위한 오브젝티브C에서부터 빅데이터 분석에 활용하는 R의 활용에 이르기까지 UML을 활용해 경쟁력 있는 소프트웨어를 개발하는 혜안을 이 책에서 얻을 수 있다.
[ 소개 ]
『Object-Oriented Analysis and Design with Applications』은 객체지향 기술 영역에서 매우 중요한 참고서로 오랫동안 사랑 받아왔다. 객체지향 기술은 지금도 계속 발전하고 있으며, 소프트웨어 개발의 주 패러다임으로 자리잡았다. 이 책은 많은 독자가 기다려왔던 3판으로, UML 2.0을 활용한 객체지향 방법론 적용 방법을 소개한다.
UML을 창시한 그래디 부치를 비롯한 저자들은 시스템과 소프트웨어 개발자들이 직면한 복잡한 문제를 해결하고 개선된 객체 개발 방법을 제공하기 위해 그들이 가진 풍부하고 다양한 경험을 이 책에 반영했다. 수많은 예를 들어가며 근본적인 개념과 개선된 방법을 명확히 설명한다. 시스템 아키텍처, 데이터 획득, 암호화, 제어 시스템, 웹 애플리케이션 등 다양한 분야에 걸친 성공적인 애플리케이션 사례를 보여준다. 분류, 구현 전략, 비용 효과적인 프로젝트 관리 등 중요한 이슈들에 대한 실용적인 조언도 함께 제시한다.
[ 제3개정판의 새로운 내용 ]
■ 가장 기본적인 요소부터 고급 요소 표기법까지 주요 변화를 강조한 UML 2.0에 대한 상세한 소개
■ 독자들의 뜨거운 요청을 바탕으로 5장에 걸쳐 전반적인 개발 생명주기의 특정 단계를 강조하면서도 모델링 관점을 크게 개선
■ OOAD와 UML을 사용한 시스템 아키텍처의 새로운 방안 등 복잡한 시스템 해결에 대한 새로운 접근방법 제시
■ 잘못 알려진 추상화, 은닉, 모듈화, 계층과 같은 객체 모델의 근간 요소들에 대해 폭넓게 개념적 토대를 검토
■ 개발 팀에게 자원을 어떻게 분배하고 복잡한 소프트웨어 시스템 개발에 대한 위험을 어떻게 관리할 것인지를 조언
■ 자바나 C++ 등 중요한 객체지향 프로그래밍 언어에 관한 부록 제공
이 책은 시스템을 관리하고, 아키텍처를 정의하고 설계하며, 객체지향 기술을 사용하는 누구에게라도 큰 영향을 줄 것이다.
[ 이 책에서 다루는 내용 ]
이 책은 객체지향 시스템의 분석•설계에 대한 실용 안내서다. 특히 이 책에서 주요하게 다루는 내용은 다음과 같다.
■ 객체모델에 관한 기본 개념과 시대별 진화
■ 객체지향 분석•설계 표기법과 프로세스
■ 다양한 문제 영역에서 현실감 있는 애플리케이션으로 익히는 객체지향 분석•설계
이 책은 모두 탄탄한 이론에 근거해 개념을 설명하는 한편, 아키텍트부터 소프트웨어 개발자에 이르기까지 모든 소프트웨어 공학 실무자가 필요로 하는 관심사를 설명하는 실용서다.
[ 이 책의 대상 독자 ]
이 책은 학생뿐만 아니라 컴퓨터 전문가도 볼 수 있게 하는 데 주안점을 뒀다.
■ 시스템 개발자와 소프트웨어 개발자가 객체지향 기술을 이용해 실제 문제를 효과적으로 푸는 방법을 제시한다.
■ 분석가나 아키텍트 역할을 맡고 있다면, 요구사항에서부터 구현에 이르는 경로를 객체지향 분석•설계 방법으로 제시한다. 객체지향에서 ‘좋은’ 아키텍처와 ‘나쁜’ 아키텍처를 구별하는 방법을 개발하고, 또한 현실 문제가 난해할 때는 설계 대안별 장단점을 파악하는 능력도 개발한다. 또한 가장 중요한 사항으로, 복잡한 시스템을 추론해가는 신선한 접근법도 제시한다.
■ 프로그램 관리자 역할로서 필요한 주제에 대해서 통찰력을 제시한다. 예를 들면 개발 팀에 자원을 할당하기, 소프트웨어 품질, 계량화(metrics), 복잡한 소프트웨어 시스템과 관련된 위험 관리 등이다.
■ 학생에게 필요한 것으로, 복잡한 시스템을 개발할 때 과학과 기술을 이용하는 방법을 배울 수 있도록 설명한다.
이 책은 학부와 대학원 강좌에서 사용하기 적합하도록 꾸몄지만, 전문가 세미나와 개별 학습용으로도 쓸 수 있다. 또한 소프트웨어 개발 방법을 주로 다루기 때문에, 소프트웨어 공학 강의에도 쓰일 수 있다. 객체지향 프로그래밍 언어를 가르치는 강의에서 부교재로 활용해도 좋다.
[ 이 책의 구성 ]
이 책은 3부로 나뉘어 있다. 개념과 방법, 애플리케이션으로 구성돼 있고, 보충 자료를 충분히 넣었다.
1부. 개념
1부에서는 소프트웨어에 내재하는 복잡도에 대해 살펴보고, 복잡도가 나타나는 방법에 대해서 알아본다. 또한 이러한 복잡도를 관리하는 수단으로서 객체모델을 제안한다. 자세히 들어가서는, 객체모델을 구성하는 기본 요소를 조사한다. 그 중에는 추상화, 캡슐화, 모듈화, 계층구조가 있다. 이 단원에서는 ‘클래스란 무엇인가?’와 ‘객체란 무엇인가?’ 같은 기본 질문에 자세히 답하는 형식을 취한다. 의미 있는 클래스와 객체를 식별해내는 것이 객체지향 개발에서 핵심 과제이기 때문에 분류법 본질을 연구하는 데 공을 많이 들인다. 특히 다른 학문에서 사용하는 분류법을 조사해(예를 들어 생물학, 언어학, 심리학) 소프트웨어 시스템에서 클래스와 객체를 찾아내는 문제에 거기서 얻은 교훈을 적용한다.
2부. 방법
2부에서는 복잡한 시스템을 개발하는 방법을 제시하며 모두 객체모델을 기반으로 한다. 먼저 객체지향 분석•설계할 때 사용하는 그림 표기법 UML에 대해 알아보고, 일반 프로세스 프레임워크를 제시한다. 더 나아가 객체지향 개발할 때 실용적인 측면(특히 소프트웨어 개발 생명주기에서 차지하는 위치와 프로젝트 관리에 미치는 영향)에 대해 알아본다.
3부. 애플리케이션
3부에서는 다양한 분야에서 선별된 문제를 포괄하는 흥미로운 예시 5개를 제공한다. 즉 시스템 아키텍처, 제어 시스템, 암호 해독, 데이터 수집, 웹 개발이다. 이러한 문제 영역을 고르게 된 데는 이들은 현업에 종사하는 소프트웨어 엔지니어가 직면하는 복잡한 문제의 표본이기 때문이다. 간단한 문제에서 특정 원칙을 적용하기는 쉽지만, 우리가 집중하려는 일은 현실에서 유용한 시스템을 만드는 것이므로, 객체모델을 복잡한 시스템으로 키워나가는 방법에 관심이 많다. 소프트웨어 시스템을 개발하는 일은 단순히 규정된 내용을 따라가는 방식으로 이뤄지지 않는다. 따라서 우리가 강조하고 싶은 것은 응용시스템은 점진적으로 개발해야 하고, 몇 가지 견고한 원칙을 지키면서 모델 주도로 진행해야 한다는 점이다.
보충 자료
책 전반에 걸쳐 충분할 정도로 보충 자료를 내용과 함께 엮어 제공했다. 대부분 장마다 보충 자료 항목에서 주제와 관련된 정보를 제공한다. 이 책에서는 객체지향 프로그래밍 언어 부록을 실어, 보통 사용되는 언어 특징을 요약했다. 또한 일반 용어 사전과 광범위하게 분류된 저서 목록을 제공해 객체모델의 출처 자료에 대한 참조를 나열했다.
[ 이 책의 활용법 ]
이 책은 처음부터 끝까지 차례대로 읽어도 되고 순서를 바꿔 읽어도 무방하다. 객체모델 개념을 깊게 알고 싶거나 객체지향 개발 원리에 대한 동기부여를 알려면, 1장부터 차례대로 읽어가는 편이 좋다. 객체지향 분석•설계 표기법과 프로세스를 상세히 배우는 일이 주관심사라면, 5장과 6장부터 시작한다. 7장은 이 방법을 직접 사용하는 프로젝트 관리자에게 특히 유용하다. 객체지향 기술을 특정 문제에 실제로 적용하는 일에 가장 관심이 있다면 8장부터 12장 중에서 하나를 고르거나 모두 읽기를 권한다.
[ 소개 ]
『Object-Oriented Analysis and Design with Applications』은 객체지향 기술 영역에서 매우 중요한 참고서로 오랫동안 사랑 받아왔다. 객체지향 기술은 지금도 계속 발전하고 있으며, 소프트웨어 개발의 주 패러다임으로 자리잡았다. 이 책은 많은 독자가 기다려왔던 3판으로, UML 2.0을 활용한 객체지향 방법론 적용 방법을 소개한다.
UML을 창시한 그래디 부치를 비롯한 저자들은 시스템과 소프트웨어 개발자들이 직면한 복잡한 문제를 해결하고 개선된 객체 개발 방법을 제공하기 위해 그들이 가진 풍부하고 다양한 경험을 이 책에 반영했다. 수많은 예를 들어가며 근본적인 개념과 개선된 방법을 명확히 설명한다. 시스템 아키텍처, 데이터 획득, 암호화, 제어 시스템, 웹 애플리케이션 등 다양한 분야에 걸친 성공적인 애플리케이션 사례를 보여준다. 분류, 구현 전략, 비용 효과적인 프로젝트 관리 등 중요한 이슈들에 대한 실용적인 조언도 함께 제시한다.
[ 제3개정판의 새로운 내용 ]
■ 가장 기본적인 요소부터 고급 요소 표기법까지 주요 변화를 강조한 UML 2.0에 대한 상세한 소개
■ 독자들의 뜨거운 요청을 바탕으로 5장에 걸쳐 전반적인 개발 생명주기의 특정 단계를 강조하면서도 모델링 관점을 크게 개선
■ OOAD와 UML을 사용한 시스템 아키텍처의 새로운 방안 등 복잡한 시스템 해결에 대한 새로운 접근방법 제시
■ 잘못 알려진 추상화, 은닉, 모듈화, 계층과 같은 객체 모델의 근간 요소들에 대해 폭넓게 개념적 토대를 검토
■ 개발 팀에게 자원을 어떻게 분배하고 복잡한 소프트웨어 시스템 개발에 대한 위험을 어떻게 관리할 것인지를 조언
■ 자바나 C++ 등 중요한 객체지향 프로그래밍 언어에 관한 부록 제공
이 책은 시스템을 관리하고, 아키텍처를 정의하고 설계하며, 객체지향 기술을 사용하는 누구에게라도 큰 영향을 줄 것이다.
[ 이 책에서 다루는 내용 ]
이 책은 객체지향 시스템의 분석•설계에 대한 실용 안내서다. 특히 이 책에서 주요하게 다루는 내용은 다음과 같다.
■ 객체모델에 관한 기본 개념과 시대별 진화
■ 객체지향 분석•설계 표기법과 프로세스
■ 다양한 문제 영역에서 현실감 있는 애플리케이션으로 익히는 객체지향 분석•설계
이 책은 모두 탄탄한 이론에 근거해 개념을 설명하는 한편, 아키텍트부터 소프트웨어 개발자에 이르기까지 모든 소프트웨어 공학 실무자가 필요로 하는 관심사를 설명하는 실용서다.
[ 이 책의 대상 독자 ]
이 책은 학생뿐만 아니라 컴퓨터 전문가도 볼 수 있게 하는 데 주안점을 뒀다.
■ 시스템 개발자와 소프트웨어 개발자가 객체지향 기술을 이용해 실제 문제를 효과적으로 푸는 방법을 제시한다.
■ 분석가나 아키텍트 역할을 맡고 있다면, 요구사항에서부터 구현에 이르는 경로를 객체지향 분석•설계 방법으로 제시한다. 객체지향에서 ‘좋은’ 아키텍처와 ‘나쁜’ 아키텍처를 구별하는 방법을 개발하고, 또한 현실 문제가 난해할 때는 설계 대안별 장단점을 파악하는 능력도 개발한다. 또한 가장 중요한 사항으로, 복잡한 시스템을 추론해가는 신선한 접근법도 제시한다.
■ 프로그램 관리자 역할로서 필요한 주제에 대해서 통찰력을 제시한다. 예를 들면 개발 팀에 자원을 할당하기, 소프트웨어 품질, 계량화(metrics), 복잡한 소프트웨어 시스템과 관련된 위험 관리 등이다.
■ 학생에게 필요한 것으로, 복잡한 시스템을 개발할 때 과학과 기술을 이용하는 방법을 배울 수 있도록 설명한다.
이 책은 학부와 대학원 강좌에서 사용하기 적합하도록 꾸몄지만, 전문가 세미나와 개별 학습용으로도 쓸 수 있다. 또한 소프트웨어 개발 방법을 주로 다루기 때문에, 소프트웨어 공학 강의에도 쓰일 수 있다. 객체지향 프로그래밍 언어를 가르치는 강의에서 부교재로 활용해도 좋다.
[ 이 책의 구성 ]
이 책은 3부로 나뉘어 있다. 개념과 방법, 애플리케이션으로 구성돼 있고, 보충 자료를 충분히 넣었다.
1부. 개념
1부에서는 소프트웨어에 내재하는 복잡도에 대해 살펴보고, 복잡도가 나타나는 방법에 대해서 알아본다. 또한 이러한 복잡도를 관리하는 수단으로서 객체모델을 제안한다. 자세히 들어가서는, 객체모델을 구성하는 기본 요소를 조사한다. 그 중에는 추상화, 캡슐화, 모듈화, 계층구조가 있다. 이 단원에서는 ‘클래스란 무엇인가?’와 ‘객체란 무엇인가?’ 같은 기본 질문에 자세히 답하는 형식을 취한다. 의미 있는 클래스와 객체를 식별해내는 것이 객체지향 개발에서 핵심 과제이기 때문에 분류법 본질을 연구하는 데 공을 많이 들인다. 특히 다른 학문에서 사용하는 분류법을 조사해(예를 들어 생물학, 언어학, 심리학) 소프트웨어 시스템에서 클래스와 객체를 찾아내는 문제에 거기서 얻은 교훈을 적용한다.
2부. 방법
2부에서는 복잡한 시스템을 개발하는 방법을 제시하며 모두 객체모델을 기반으로 한다. 먼저 객체지향 분석•설계할 때 사용하는 그림 표기법 UML에 대해 알아보고, 일반 프로세스 프레임워크를 제시한다. 더 나아가 객체지향 개발할 때 실용적인 측면(특히 소프트웨어 개발 생명주기에서 차지하는 위치와 프로젝트 관리에 미치는 영향)에 대해 알아본다.
3부. 애플리케이션
3부에서는 다양한 분야에서 선별된 문제를 포괄하는 흥미로운 예시 5개를 제공한다. 즉 시스템 아키텍처, 제어 시스템, 암호 해독, 데이터 수집, 웹 개발이다. 이러한 문제 영역을 고르게 된 데는 이들은 현업에 종사하는 소프트웨어 엔지니어가 직면하는 복잡한 문제의 표본이기 때문이다. 간단한 문제에서 특정 원칙을 적용하기는 쉽지만, 우리가 집중하려는 일은 현실에서 유용한 시스템을 만드는 것이므로, 객체모델을 복잡한 시스템으로 키워나가는 방법에 관심이 많다. 소프트웨어 시스템을 개발하는 일은 단순히 규정된 내용을 따라가는 방식으로 이뤄지지 않는다. 따라서 우리가 강조하고 싶은 것은 응용시스템은 점진적으로 개발해야 하고, 몇 가지 견고한 원칙을 지키면서 모델 주도로 진행해야 한다는 점이다.
보충 자료
책 전반에 걸쳐 충분할 정도로 보충 자료를 내용과 함께 엮어 제공했다. 대부분 장마다 보충 자료 항목에서 주제와 관련된 정보를 제공한다. 이 책에서는 객체지향 프로그래밍 언어 부록을 실어, 보통 사용되는 언어 특징을 요약했다. 또한 일반 용어 사전과 광범위하게 분류된 저서 목록을 제공해 객체모델의 출처 자료에 대한 참조를 나열했다.
[ 이 책의 활용법 ]
이 책은 처음부터 끝까지 차례대로 읽어도 되고 순서를 바꿔 읽어도 무방하다. 객체모델 개념을 깊게 알고 싶거나 객체지향 개발 원리에 대한 동기부여를 알려면, 1장부터 차례대로 읽어가는 편이 좋다. 객체지향 분석•설계 표기법과 프로세스를 상세히 배우는 일이 주관심사라면, 5장과 6장부터 시작한다. 7장은 이 방법을 직접 사용하는 프로젝트 관리자에게 특히 유용하다. 객체지향 기술을 특정 문제에 실제로 적용하는 일에 가장 관심이 있다면 8장부터 12장 중에서 하나를 고르거나 모두 읽기를 권한다.
목차
목차
- 1부 개념
- 1장 복잡성
- 1.1 복잡한 시스템 구조
- 1.2 소프트웨어의 내재된 복잡성
- 1.3 복잡한 시스템에 있는 다섯 가지 성분
- 1.4 복잡성 제어
- 1.5 혼돈에서 질서 찾기
- 1.6 복잡한 시스템 설계하기
- 2장 객체모델
- 2.1 객체모델 진화
- 2.2 객체모델 기초
- 2.3 객체모델 요소
- 2.4 객체모델 적용하기
- 3장 클래스와 객체
- 3.1 객체의 특성
- 3.2 객체 간 관계
- 3.3 클래스 성질
- 3.4 클래스 간 관계
- 3.5 클래스와 객체 간 작용
- 3.6 품질 좋은 클래스와 객체 구축하기
- 4장 분류법
- 4.1 올바른 분류법이 중요
- 4.2 클래스와 객체 식별하기
- 4.3 핵심 추상 개념과 메커니즘
- 2부 방법
- 5장 표기
- 5.1 UML
- 5.2 패키지 다이어그램
- 5.3 컴포넌트 다이어그램
- 5.4 배치 다이어그램
- 5.5 유스케이스 다이어그램
- 5.6 활동 다이어그램
- 5.7 클래스 다이어그램
- 5.8 시퀀스 다이어그램
- 5.9 상호작용개요 다이어그램
- 5.10 복합구조 다이어그램
- 5.11 상태 다이어그램
- 5.12 타이밍 다이어그램
- 5.13 객체 다이어그램
- 5.14 커뮤니케이션 다이어그램
- 6장 프로세스
- 6.1 제1원칙
- 6.2 거시 프로세스: 소프트웨어 개발 생명주기
- 6.3 미시 프로세스: 분석과 설계 프로세스
- 7장 화용론
- 7.1 관리와 계획
- 7.2 인력 관리
- 7.3 배포 관리
- 7.4 재사용
- 7.5 품질 보증과 측정기준
- 7.6 문서화
- 7.7 도구
- 7.8 그 밖의 주제
- 7.9 객체지향 개발의 장점과 위험
- 3부 애플리케이션
- 8장 시스템 아키텍처: 위성기반 항법장치
- 8.1 개념정립 단계
- 8.2 정련 단계
- 8.3 구축 단계
- 8.4 전이 이후
- 9장 제어 시스템: 교통관리
- 9.1 개념정립 단계
- 9.2 정련 단계
- 9.3 구축 단계
- 9.4 전이 이후
- 10장 인공지능: 암호해독
- 10.1 개념정립 단계
- 10.2 정련 단계
- 10.3 구축 단계
- 10.4 전이 이후
- 11장 데이터 획득: 기후 관찰 스테이션
- 11.1 도입
- 11.2 정련
- 11.3 구축
- 11.4 사후-전이
- 12장 웹 애플리케이션: 휴가 관리 시스템
- 12.1 도입
- 12.2 정련
- 12.3 구축
- 12.4 전이 및 전이 이후
- 부록A 객체지향 프로그래밍 언어
- A.1 언어의 발전
- A.2 스몰토크
- A.3 C++
- A.4 자바
- 부록B 권장도서 안내
- 노트
- 용어 설명