하지만 이제 생겼다 바로 소프트웨어 설계의 정석 ~ 소프트웨어 설계 시 참고할만한 책이 출간되어 너무 좋다
기능 구현을 넘어 전체 시스템을 조망하며 설계 역량을 강화하는 방법
설계는 구현을 위한 준비 작업입니다. 즉 기능을 구현하기 위해서는 올바른 설계가 필요합니다. 이 책은 유스케이스 분석, 개념 모델링, 시스템 아키텍처 등 소프트웨어 설계에 필요한 이론을 폭넓게 다룹니다. 부분적인 기능 개발에서 시스템 설계에 이르기까지의 과정을 구체적인 사례와 함께 설명합니다. 소프트웨어 설계 경험이 많은 고연차 개발자라면 설계에 대한 다양한 관점과 사례들을 정리하고 개발 방식을 되돌아보는 계기가 될 것입니다.
경험이 적은 저연차 개발자라면 과거와 현재의 설계를 알아보고 설계 과정 전반을 경험하며 기본을 다질 수 있습니다. 이 책이 소프트웨어 설계 기본 원리를 익히는 데 주춧돌 역할을 할 것입니다.
PART 1 입문 편
CHAPTER 1 첫 설계를 잘해내기 위해
_1.1 설계자로 가는 길
_1.2 개발자로서 느끼는 보람
_1.3 개발자의 커리어
PART 2 설계 편
CHAPTER 2 설계의 목적
_2.1 무엇을 설계할 것인가
_2.2 개발 프로젝트를 진행하는 방법
_2.3 개발 프로세스 선택과 진행
_2.4 설계의 목적
_2.5 나쁜 설계
_2.6 설계 접근법
CHAPTER 3 외부 설계 방법
_3.1 외부 설계란?
_3.2 필요한 업무 지식
_3.3 유스케이스 분석
_3.4 개념 모델링
_3.5 화면 설계
_3.6 외부 시스템 I/F 설계
_3.7 Batch 설계
_3.8 장표 설계
_3.9 데이터베이스 논리 설계
_3.10 NoSQL 데이터베이스 설계
_3.11 비기능 요구사항 정의 및 시스템 설계
_3.12 시스템 인프라 설계 및 배치 설계
CHAPTER 4 내부 설계 방법
_4.1 내부 설계란?
_4.2 화면 프로그램 설계
_4.3 비즈니스 로직 프로그램 설계
_4.4 데이터베이스 프로그램 설계
_4.5 데이터베이스 물리 설계
_4.6 테스트를 위한 설계
_4.7 개발 환경 구축
_4.8 개발 표준 수립
PART 3 아키텍처 편
CHAPTER 5 아키텍처의 목적
_5.1 아키텍처란?
CHAPTER 6 아키텍처 설계 접근법
_6.1 업무 애플리케이션에 대한 통찰력
_6.2 객체지향 설계
_6.3 서브시스템 분할
_6.4 레이어
_6.5 처리 공통화(DRY)
_6.6 설계 및 프로그램 추적성
_6.7 의존성 주입
_6.8 마이크로서비스
CHAPTER 7 정말 설계가 필요한가
_7.1 다시 새기는 설계의 의미
_7.2 설계가 필요 없는 이유
_7.3 설계의 미래
“앞으로 개발자는 큰 시스템을 처음부터 개발할 수 있는 개발자와
큰 시스템의 일부 기능만 개발할 수 있는 개발자로 나뉠 것입니다.
그 차이는 ‘설계를 할 수 있느냐 없느냐’에 달려 있습니다.”
설계는 좋은 프로그램을 작성하기 위한 기술입니다. 시스템 개발 과정에서 업무 분석과 요구사항 정의 단계에서는 업무와 실제 세계를 표현하고, 구현 단계에서는 컴퓨터가 이해할 수 있는 프로그래밍 언어와 비트의 세계를 다룹니다. 이 두 세계를 연결해주는 것이 바로 설계입니다. 따라서 더 나은 시스템을 위해서는 올바른 소프트웨어 설계가 필요합니다.
그렇다면 설계를 잘하기 위해서는 무엇이 필요할까요? 이 책에서는 세 가지를 제시하고 있습니다.
설계에 필요한 최소한의 지식으로는 유스케이스 모델, 개념 모델, 데이터베이스 설계, 아키텍처 설계를 다룹니다. 객체지향과 통합 모델링 언어(UML)가 기본 기술이라면 이러한 지식은 응용 기술에 해당합니다.
객체지향이나 UML 입문자를 위한 책을 읽어도 실제로 어떻게 활용해야 할지 모르는 분도 많을 것입니다. 이 책에서 다루는 응용 기술에 대한 설명은 객체지향이나 UML과 같은 기본 기술을 다지는 데에도 도움이 됩니다.
『소프트웨어 설계의 정석』은 소프트웨어 개발에 꼭 필요한 설계 원칙과 방법론을 체계적으로 정리한 책입니다. 저자의 실전 경험을 바탕으로 설계 이론과 실제 적용 방안을 알기 쉽게 설명하고 있습니다. 현재의 방식이 앞으로도 계속될 것이라고 단언할 수는 없지만 근간이 되는 기본 원리는 변하지 않습니다. 개발자로서 중요한 것은 기본 원리를 이해하고 다양한 응용 기술을 배우는 것입니다. 설계, 분석, 개발에 대한 흔들림 없는 지식을 쌓고 싶은 분들에게 꼭 필요한 책입니다.
이 책의 구성
- 입문 편: 커리어를 쌓기 위해 필요한 역량과 설계 역량의 관계를 설명합니다.
- 설계 편: 설계의 목적, 설계에 필요한 최소한의 기술, 설계 커뮤니케이션에 대해 알아봅니다.
- 아키텍처 편: 설계 편에서 기초를 익힌 사람이 난도가 높은 시스템도 설계할 수 있도록 아키텍처라는 개념을 설명합니다. 아키텍처를 배우는 것은 아키텍트로서 커리어를 쌓는 데 도움이 됩니다.
대상 독자
- 소프트웨어 설계가 무엇인지 전반적인 흐름을 알고 싶은 분
- 소프트웨어 설계 경험은 있지만 기초부터 다시 공부하고 싶은 분
- SI로 이직을 고민하고 있는 분
- 아키텍트를 지향하는 분