Top

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장 중에서 하나를 고르거나 모두 읽기를 권한다.

저자/역자 소개

[ 저자 소개 ]

그래디 부치 (Grady Booch)
객체지향 프로그래밍과 관련된 여섯 권의 베스트셀러 저자며, IBM에서 일한다. 객체지향의 원류이자 UML의 창시자로 세계적인 인물이다.

로버트 막심처크 (Robert Maksimchuk)
Unisys Chief Technology Office의 연구 단장으로, 새로운 모델링 기술이 주 관심 분야다. 『UML for Database Design』과 『UML for Mere Mortals』의 공동저자다.

마이클 잉글 (Michael Engle)
록히드 마틴의 기술 자문 핵심 멤버다. 다양한 도메인에 대해 프로젝트 초기 준비부터 개발과 지원까지 전체 시스템 개발 생명주기에 걸친 광범위한 기술과 관리 경험을 갖고 있다.

바비 영 (Bobbi Young)
Unisys Chief Technology Office의 연구 단장이다. 일반 업체와 국방부 관련 IT 업체에서 오랜 경험을 갖고 있다.

짐 코낼런 (Jim Conallen)
IBM 래쇼날 MDD(Model Driven Development) 전략팀의 소프트웨어 기술자다. OMG(Object Management Group)의 MDA(Model Driven Architecture)를 활용한 IBM의 래쇼날 모델 도구 제품 기획에 활발히 참여하고 있다.

켈리 휴스톤 (Kelly Houston)
IBM 래쇼날의 IT 전문 컨설턴트다. IBM 내부 방법론을 제작하는 방법론 아키텍트이자 전체 IBM 방법론 통합팀의 팀원이다.


[ 옮긴이의 말 ]

그래디 부치가 1991년에 초판을 발간한 이후 2판(1994년)을 거쳐 3판(2007년)에 이르기까지 전 세계의 개발자로부터 사랑 받아 온 이 책 『Object-Oriented Analysis and Design with Application』을 드디어 한국어로 출판하게 되어 감회가 새롭습니다.

저자는 누구보다 앞서 컴퓨팅 기술의 새로운 방향을 탐지해 객체 개념을 적용한 에이다(Ada) 언어를 개발했으며, 동일한 개념을 분석•설계 프로세스에도 일관되게 적용할 수 있음을 증명했습니다. 돌이켜 보면 초판을 집필하던 1980년대는 압도적으로 많은 사람들이 구조적 분석 설계에 몰두하던 시기입니다. 그가 독창적으로 시도한 노력은 객체를 기반으로 하는 분석•설계 모델링 기법을 체계적으로 정립하기에 이르렀고, 당시 널리 인정받던 럼바의 OM과 야콥슨의 OOSE까지 합세해 UML 표준 언어로 발전했습니다. 모델러와 분석가, 설계가, 개발자들이 공통으로 사용할 수 있는 대화 수단은 바로 UML 탄생으로 바뀐 환경 덕분에 등장할 수 있었습니다. 그 과정에서 부치의 공헌은 지대합니다. 부치는 컴퓨팅에 종사하는 사람들에게 도움되는 개념들을 소개할 때 자연 현상에 내재된 원리를 명쾌하게 설명하고, 그러한 원리를 유추해 컴퓨팅에서도 활용할 수 있도록 추상화 기법으로 발전시켰습니다. 책을 학습하면서 배운 것 중에 한 가지를 소개한다면, 모델링할 때는 문제의 본질에 기반해 사고하고, 이분법을 적용해 복잡성을 극복해 가는 방법입니다. 독자들도 이런 접근법에 순응한다면 더 즐겁게 일할 수 있고, 발전은 덤으로 얻을 수 있다고 생각합니다.

이 책을 번역하기에 앞서 역자들끼리 다짐한 것은 우리말답게 글을 써서 처음 입문하는 분들이라도 책을 읽어 감에 따라 UML 전체 구성이 머리에 쏙 들어올 수 있도록 전달해 주자는 것이었습니다. 그래서 우선 용어부터 의미가 잘 들어오는 말로 바꾸기로 하고 관련 분야 전문가들과 상의했습니다. 하지만 그 과정은 매우 어렵고 험난했습니다. 그 과정은 무엇이 참이고 무엇이 거짓인가에 대한 문제가 아닌, 어떤 용어가 더 IT 업계에서 통용되고 있는가와 개선할 수 있는 수준이 어디까지인가에 대한 판단이었습니다. 결국 모든 사람이 만족하거나 동의할 수 있는 용어는 없었습니다. 용어의 선택이란, 서로 다른 개인적인 취향이나 의견도 쉽게 무시할 수 없는 각자에게는 소중하고 의미 있는 영역이라, 수학문제를 풀듯 정답이 있을 수 없었기 때문이었습니다. 이 점이 번역을 하면서 가장 힘들었던 문제였지만, 독자를 좀더 이해하고 포용할 수 있는 가장 값진 성과물이기도 했습니다.

이 책의 번역 참여자들이 나름 국내 IT 기술서적을 여러 권 번역해 왔음에도 불구하고, 기존의 고정관념을 탈피하고 여러 분야의 국내 전문 번역자들의 의견을 귀담아 받아들이려고 했습니다. 나름 사전에 필독서를 정하고 공부하고 고민하는 데 많은 도움을 준 책으로는 이오덕의 『우리말 바로 쓰기』, 안정효의 『번역의 공격과 수비』, 이희재의 『번역의 탄생』입니다. 그 중에서 특히 『번역의 탄생』은 최근에 출판된 도서로서 우리말을 자신 있게 쓸 수 있도록 안내하고 있어서 큰 도움이 많이 됐습니다. 하지만 현실과 이상의 벽은 높았습니다. 그래서 많은 사람들, 특히 IT 업계에서 통용되는 용어를 재수용함으로써 역자들은 일방적 아집이 아닌 이해 당사자들과의 소통을 택했습니다. 용어 선정 논의에 기꺼이 참여해 주시고 읽으면서 교정해 주어 우리말 품질을 개선할 기회를 주신 여러분께 감사 드립니다. 마지막으로 오랜 노고와 인내 끝에 출판되는 이 책이 앞으로 좀더 우리말에 가까운 IT 서적 번역의 밑거름이 될 수 있기를 기원합니다.


[ 옮긴이 소개 ]

박현철
춤을 사랑했고, 책 읽는 것을 좋아한다. 서울대학교 계산통계학과, 연세대학교 MBA를 졸업했다. 다양한 분야에 걸친 많은 프로젝트를 수행했으며, 프로그래머로 시작해서, CEO까지 여러 역할을 경험했다. 현재, IT Project 전문 컨설팅 회사인 빅프레임(BigFrame) 사장, 비즈니스 중심 클라우드 서비스 회사인 유엔진클라우드 기술고문 및 건국대학교 정보통신대학원 겸임교수로 있다.
Certified Scrum Master, Certified Scrum Developer, Certified Product Owner이며, 저서로는 『객체지향 분석 설계 Visual C++ 프로그래밍』, 『프로그래머 그들만의 이야기』, 『실전 CBD Project』, 『UML 이해와 활용』이 있고, 번역서로는 『Agile Project Management with Scrum 한국어판』, 『엔터프라이즈 애자일 프로젝트 관리』, 『eXtreme Programming Installed: XP 도입을 위한 실전 입문』이 있다.

임춘봉
도구를 만들거나 설계할 때 가이드로 삼고 있는 말은 "Form follows function"인데 그 말에 순응하는 만큼 결과도 좋아짐을 경험으로 터득했기 때문이다. 모든 직업 중에서 시인이야 말로 가장 탁월한 개념 설계가라고 믿고 있으며, '모든 순간이 꽃봉오리인 것을', '생명의 서', '삶이 그대를 속인다 해도' 그리고 '꽃'을 즐거이 암송하면서 고 수준의 추상화 기법을 배운다.
그레노블 대학 컴퓨터 공학 석사를 마친 후, ETRI 선임연구원과 데이콤 연구서 본부장을 역임했고, 현재 주식회사 크로센트 상무와 정보시스템 감리사로 활동한다.
한국어판 역서로는 『UML User Guide (2판)』과 『UML Distilled』가 있다.

박경민
지금도 하루하루를 전투적인 자세로 일을 하고 있으며, 잦은 해외 출장으로 세상과 멀어진 채 일에 몰두하고 있다.
서울과학기술대학교 산업대학원 컴퓨터공학 석사로, SPICE 심사원이며, ISO 26262 Safety 프로세스를 개발했고, ETRI 연구원과 화이트정보통신 CBD 연구팀장을 지냈다.
현재 ㈜만도 Global R&D 기능안전 PJT 팀 차장으로 있다.

목차

목차
  • 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 권장도서 안내
  • 노트
    • 용어 설명

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안