메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

소프트웨어 설계의 정석

변화하는 기술 환경에서도 흔들리지 않는 설계의 기본 원칙

한빛미디어

번역서

판매중

  • 저자 : 요시하라 쇼자부로
  • 번역 : 이해영
  • 출간 : 2024-09-02
  • 페이지 : 320 쪽
  • ISBN : 9791169212625
  • 물류코드 :11262
  • 초급 초중급 중급 중고급 고급
4.9점 (24명)
좋아요 : 27

기능 구현을 넘어 전체 시스템을 조망하며 설계 역량을 강화하는 방법

 

설계는 구현을 위한 준비 작업입니다. 즉 기능을 구현하기 위해서는 올바른 설계가 필요합니다. 이 책은 유스케이스 분석, 개념 모델링, 시스템 아키텍처 등 소프트웨어 설계에 필요한 이론을 폭넓게 다룹니다. 부분적인 기능 개발에서 시스템 설계에 이르기까지의 과정을 구체적인 사례와 함께 설명합니다. 소프트웨어 설계 경험이 많은 고연차 개발자라면 설계에 대한 다양한 관점과 사례들을 정리하고 개발 방식을 되돌아보는 계기가 될 것입니다. 

 

경험이 적은 저연차 개발자라면 과거와 현재의 설계를 알아보고 설계 과정 전반을 경험하며 기본을 다질 수 있습니다. 이 책이 소프트웨어 설계 기본 원리를 익히는 데 주춧돌 역할을 할 것입니다.

 

요시하라 쇼자부로 저자

요시하라 쇼자부로

IT 아키텍트로서 수많은 중요 시스템을 재구축한 후 IT 컨설턴트로 독립했다. 대형 자동차 회사의 글로벌 기간 시스템 재구축에 참여하는 등 엔터프라이즈 영역 시스템을 개발한 경험이 풍부하다. 이후에는 대형 출판사와 대형 물류 회사에 애자일 개발을 도입하는 등 애자일 개발도 실천하고 있다. 최근에는 여러 회사의 CTO와 임원을 역임하면서 비즈니스 혁신을 위한 개발자 조직 설립을 중심으로 활동하고 있으며, 2020년 (주)어퍼레일(UPPERRAIL)을 설립했다. 정보경영혁신전문대학(iU대학) 객원교수이기도 하다.

이해영 역자

이해영

항상 자극과 도전을 찾는 10년 차 게임 기획자이다. 크래프톤, 앤더스 인터랙티브를 거치면서 다양한 장르의 게임을 개발했고 동시에 다양한 직군의 사람들과 협업해왔다. 현재는 인디 게임 개발에 몰두 중이다.

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 설계의 미래

“앞으로 개발자는 큰 시스템을 처음부터 개발할 수 있는 개발자와
큰 시스템의 일부 기능만 개발할 수 있는 개발자로 나뉠 것입니다.
그 차이는 ‘설계를 할 수 있느냐 없느냐’에 달려 있습니다.”

 

설계는 좋은 프로그램을 작성하기 위한 기술입니다. 시스템 개발 과정에서 업무 분석과 요구사항 정의 단계에서는 업무와 실제 세계를 표현하고, 구현 단계에서는 컴퓨터가 이해할 수 있는 프로그래밍 언어와 비트의 세계를 다룹니다. 이 두 세계를 연결해주는 것이 바로 설계입니다. 따라서 더 나은 시스템을 위해서는 올바른 소프트웨어 설계가 필요합니다.

 

그렇다면 설계를 잘하기 위해서는 무엇이 필요할까요? 이 책에서는 세 가지를 제시하고 있습니다. 

  1. 설계의 목적을 정확하게 파악하기
  2. 설계에 필요한 최소한의 기술 익히기
  3. 명확하게 의사소통하기

 

설계에 필요한 최소한의 지식으로는 유스케이스 모델, 개념 모델, 데이터베이스 설계, 아키텍처 설계를 다룹니다. 객체지향과 통합 모델링 언어(UML)가 기본 기술이라면 이러한 지식은 응용 기술에 해당합니다.

 

객체지향이나 UML 입문자를 위한 책을 읽어도 실제로 어떻게 활용해야 할지 모르는 분도 많을 것입니다. 이 책에서 다루는 응용 기술에 대한 설명은 객체지향이나 UML과 같은 기본 기술을 다지는 데에도 도움이 됩니다.

 

『소프트웨어 설계의 정석』은 소프트웨어 개발에 꼭 필요한 설계 원칙과 방법론을 체계적으로 정리한 책입니다. 저자의 실전 경험을 바탕으로 설계 이론과 실제 적용 방안을 알기 쉽게 설명하고 있습니다. 현재의 방식이 앞으로도 계속될 것이라고 단언할 수는 없지만 근간이 되는 기본 원리는 변하지 않습니다. 개발자로서 중요한 것은 기본 원리를 이해하고 다양한 응용 기술을 배우는 것입니다. 설계, 분석, 개발에 대한 흔들림 없는 지식을 쌓고 싶은 분들에게 꼭 필요한 책입니다.

 

이 책의 구성
-    입문 편: 커리어를 쌓기 위해 필요한 역량과 설계 역량의 관계를 설명합니다.
-    설계 편: 설계의 목적, 설계에 필요한 최소한의 기술, 설계 커뮤니케이션에 대해 알아봅니다.
-    아키텍처 편: 설계 편에서 기초를 익힌 사람이 난도가 높은 시스템도 설계할 수 있도록 아키텍처라는 개념을 설명합니다. 아키텍처를 배우는 것은 아키텍트로서 커리어를 쌓는 데 도움이 됩니다.

 

대상 독자
-    소프트웨어 설계가 무엇인지 전반적인 흐름을 알고 싶은 분 
-    소프트웨어 설계 경험은 있지만 기초부터 다시 공부하고 싶은 분
-    SI로 이직을 고민하고 있는 분 
-    아키텍트를 지향하는 분

변화하는 기술 환경에서도
흔들리지 않는
설계의 기본 원칙

소프트웨어 즉 개발을 을 하다보면
올바른 설계원칙의 대하여 고민을 하게됩니다.
어떠한 설계원칙이 올바른 설계원칙이고 아닌지에
대한 가이드가 있었으면 하는 생각을 많이 했습니다.
그러한 과정에서 TDD, BDD, DDD 개념들을 접하게됩니다.
이러한 과정에서 조금 더 쉽게 설명한 책
소프트웨어 설계의 정석을 추천합니다.
사진 설명을 입력하세요.

소프트웨어 설계의 정석은 더나은
소프트를 위해서 올바른설계를 위한 지침서라고 할 수가 있습니다.
설계의 시작부터 SQL 나아가 아키텍처의 부분까지
하나하나 자세히가르쳐 줍니다.

우리가 흔히 배우는 개발의 일련의 과정으로
설명하면서 다양하게 접근하도록 되어 있씁니다.
애플리케이션, 미들웨어, 데이터베이스
그리고 OS 하드웨어 네트워크 순서로 개발이
시작되는것인데 이러한 과정을 하나도 빠짐없이
적어놓고 보여주고 있다고 볼 수가 있습니다.
사진 설명을 입력하세요.

이전 프로젝트제에서 새로운 차세대
프로젝트로 옮기면서 마이그레이션을 하게되는데
그러한 과정도 하나하나 자세히 적혀있습니다.
주니어나 신입이 전체적으로 프로족테를 이해하지
못할 수있는데 이러한 것들은 상세히 적어서
이해 할 수 있더록 되어 있는 부분이 정말 휼륭합니다.

개발에 있어서 유지보수를 생각하는 개발
정말 이렇게 개발을 하여야하는데 현실을
그렇게 되지않기도합니다. 하지만 이책에서는
차근차근히 설계에서부터 그러한 개발이 되도록
하기 때문에 어떻게 개발하는지 어떻게 개발하여야하는지
차근차근히 소프트웨어 설계의 정석 보여줍니다.

소프트웨어 설계의 정석에서는 다양한 의사코드로
다향성 상속등을 설명하고 SQL 조인등 설계 과정에서
조금 더 좋은 방안으로 코드를 만들 수 있는 방법을 설명합니다
그리고 내부설계 외부설계 등 다양한 설계방식을 설명하면서
설계를 어려워하거나 다양한 설계를 원하는 사람에게
도움이 될만한 책이라고 할 수가 있습니다.
오라클 기반으로 분석 실행 계획까지 엿볼수가 있습니다.

소프트웨어 설계의 정석은
미래의 개발자를 위한 설계라고
정리할 수가 있습니다. 보다나은 보다 좋은
설계를 통하여 올바른 코드를통하여
실행 뿐 아니라 유지보수등 많은 고려사항을 고려합니다.
소프트웨어 설계, 개발을 하는 개발자라면
소프트웨어 설계의 정석 적극 추천합니다.

IT 프로젝트 설계 및 문서 작업을 많이 하게 되는데 소프트웨어 개발 문서 업무에 도움이 될 것 같은 주제인 "소프트웨어 설계의 정석" 책을 읽어 보게 되었습니다.

처음 책을 접하기 전에 책의 내용이 조금은 어렵지 않을까 걱정을 하였습니다.  정석이라는 용어와 책의 목차를 접했을때 조금 어려운 책이구나 하고 생각했는데  책을 읽으면서 이렇게 쉽게 소프트웨어 설계를 설명하는 책이 있을까 하고 책을 완독하게 되었습니다.

​우선 "소프트웨어 설계의 정석" 책은 IT 업무에 종사하는 분이라면 꼭 읽어 보는 것을 추천합니다.
IT 업무에 종사하게 된다면 업무 및 개발 관련 문서를 보게 되는데 "소프트웨어 설계의 정석" 책을 통해 소프트웨어가 어떻게 설계가 되고 어떤 결과물이 만들어지고 어떻게 결과물이 연결되고 어떤 의미가 있는지 확인해 볼 수 있게 구성되어 있습니다.  

​"소프트웨어 설계의 정석" 은 3개의 PART, 7개의 CHAPTER로 구성되어 있습니다. 
각 PART와 CHAPTER는 각 소프트웨어 개발의 핵심을 충분히 설명하고 있으며 CHAPTER 하위 부분을 목차에서 자세히 표시하고 있으니 필요할 때 마다 해당 부분을 찾아 읽어보면 좋을 것 같습니다.

​PART 1  입문 편
CHAPTER1 첫 설계를 잘해내기 위해 
설계시 필요한 3가지, 개발자의 가치, 개발자의 커리어, 시스템 개발의 흐름 및 개발자 커리어와 설계가 필요한 이유 등을 설명하고 있습니다. 
"소프트웨어 설계의 정석" 책의 대략적인 주제 및 읽어야 하는 이유를 설명하고 있는 부분입니다.


PART 2  설계 편
CHAPTER2 설계의 목적
CHAPTER3 외부 설계 방법
CHAPTER4 내부 설계 방법
"소프트웨어 설계의 정석" 책의 핵심 주제를 설명하고 있는 PART 입니다. 
설계 대상 , 개발 프로젝트를 진행하는 방법, 개발 프로세스 선택과 진행(워터플 개발, 애자일 개발 등)을 시작으로 설계 진행 방법 및 설계의 목적 등을 설명하고 있습니다. 해당 부분에서 소프트웨어 설계의 전반적인 작업 및 결과물을 확인할 수 있습니다. 
CHAPTER3 외부 설계 방법에서는 유즈케이스 분석, 개념 모델링, 화면 설계, 외부 시스템 I/F 설계, 커맨드/ Batch설계, 장표 설계 에 관련된 설계 방법 등을 설명하고 있습니다. 
해당 부분에서는 데이터베이스 논리 설계도 설명하고 있는데 정규화, 상속구현방법, ACID 등도 확인해 볼 수 있습니다. 
CHAPTER4 내부 설계 방법에서도 화면 프로그램 설계, 비즈니스 로직 프로그램 설계, 데이터베이스 프로그램 설계, 데이터베이스 설계에 관련된 설계 방법 등을 설명하고 있습니다. 
해당 부분에서는 트랜잭션 스크립트 패턴, 도메인 모델 패턴을 확인해 볼 수 있습니다.  업무에서는 트랜잭션 스크립트 패턴을 활용하는데 요즘 활용도가 높아지고 있는 도메인 모델 패턴도 확인해 볼 수 있습니다. 그리고 트랜잭션 제어 부분도 확인해 볼 수 있는데 해당 기술적 내용이 자세히 나오고 있습니다. 해당 부분은 소프트웨어 개발자라면 꼭 읽어 보기를 추천합니다. 트랜잭션은 업무에서 가장 중요하고 문제가 생겼을때 대상 범위를 정하는데 가장 중요한 기술입니다. 
CHAPTER3, CHAPTER4 부분이 "소프트웨어 설계의 정석" 책에서 가장 많은 부분을 차지하고 있으며 소프트웨어 개발의 핵심을 설명하고 있습니다.   "소프트웨어 설계의 정석"  책을 읽게 된다면 꼭 CHAPTER3, CHAPTER4 는 읽어 보기를 추천합니다.


PART3 아키텍처 편 
CHAPTER5 아키텍처의 목적
CHAPTER6 아키텍처 설계 접근법
CHAPTER7 정말 설계가 필요한가? 
CHAPTER5, CHAPTER6 은 아키텍처가 어떤 일을 하는지 확인할 수 있는 부분이었습니다. 유지보수성 향상, 적합성 향상, 견적에 활용 등을 확인할 수 있으며 레이어 구성, 마이크로서비스등 설계내용을 확인해 볼 수 있습니다. 
CHAPTER7 에서는 "소프트웨어 설계의 정석" 설계의 의미 및 설계가 불필요하다는 주장과 애자일 개발과 설계의 미래의 부분을 설명하고 있습니다.  
애자일 개발 방법론으로 개발방식의 변화로 인해 예전만큼 설계 결과물을 만들지 않은 경우가 많은데 "소프트웨어 설계의 정석" 책을 통해 기본적인 설계의 의미와 애자일 개발 방법론에서 어떤 결과물을 내야하는지 그리고 설계서의  중요성 및 어떻게 활용해야 하는지 고민해 볼 수 있었습니다.
미래에 계속 소프트웨어 개발 및 설계 방식이 진화할때  어떻게해야 할지 고민하고 기본의 중요성을 확인할 수 있었습니다.


"소프트웨어 설계의 정석" 책은 어렵지 않게 소프트웨어 설계가 어떻게 그리고 어떤 기술 및 결과물이 있는지 확인할 수 있는 좋은 책이라고 생각합니다. 추천할 수 밖에 없는 좋은 책입니다.

​마지막으로 "소프트웨어 설계의 정석" 추천 대상은 다음과 같습니다. 
1. IT 업무에 종사하는 모든 분
2. 소프트웨어 개발자 
3. PM
4. 소프트웨어 아키텍처 
5. IT 업무과 연계된 업무 담당자

5번은 욕심 같긴 하지만 소프트웨어 개발에 참여하는 모든분이 읽어보면 좋을 것 같습니다. 기본적인 소프트웨어 개발 개념 및 소프트웨어 개발 대화에 많은 도움이 될 것 같습니다.


한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. 


책 소개

저자 : 요시하라 쇼자부로

제목 : 소프트웨어 설계의 정석: 변화하는 기술 환경에서도 흔들리지 않는 설계의 기본 원칙

번역 : 이해영

출판사 : 한빛미디어

출간 연도 : 2024. 09.

원문 제목 : はじめての設計をやり拔くための本 第2版(2022.04.)

페이지 : 320쪽

 

 

소프트웨어 설계의 정석 - 예스24

기능 구현을 넘어 전체 시스템을 조망하며 설계 역량을 강화하는 방법설계는 구현을 위한 준비 작업이다. 즉 기능을 구현하기 위해서는 올바른 설계가 필요하다. 이 책은 유스케이스 분석, 개념

www.yes24.com

https://www.yes24.com/Product/Goods/132822819


소프트웨어 설계의 정석은 
 

Part1. 입문편(1장)

Part2. 설계편(2장 ~ 4장)

Part3. 아키텍처편(5장~7장)

으로 구성되어 있다.

 

 

입문편에서는 개발자로서의 보람과 커리어에 대해 설명하는데, 그 중 커리어를 쌓기 위해 필요한 설계 역량과 관계를 설명한다. 1장에서 인상깊었던 내용은 '1.2.2 개발자의 즐거움' 섹션인데, 직업으로써의 개발자의 현실을 일목요연하게 정리하여, 저자의 개발자 직업에 대한 생각에 대해 깊은 공감과 동질감을 느낄 수 있었던 파트였다.(주된 의견은 '개발자라는 직업은 재미있습니다.'의 한 문장으로 정리된다.) 

 


 

설계편에서는 설계의 목적, 설계를 위해 필요한 테크닉, 설계 커뮤니케이션에 대해 설명한다.

'무엇을 설계하는가?'로 시작하는 해당 파트는 '2.4 설계의 목적' 에서 5가지의 설계 목적을 알려준다. 단순히 '설계의 목적이 이것 때문이다.'로 정의하는 것이 아닌, 필요한 이유를 함께 서술하며, 설계를 외부 설계와 내부 설계로 분리하여 설계에 대한 개념을 명확하게 인지 할 수 있도록 하는 점이 '설계'에 대해 이해하는데 큰 도움이 되었다. 

특히 내부설계 파트에서는 오라클 SQL 실행 계획 및 TDD(Test Driven Development)까지 설명하는 부분이 인상 깊다. (현재 내 직무와 연관되어 데이터베이스 설계 - 정규화와 ERD 작성이 외부 설계에 포함되어 있어 조금 더 집중해서 보게 되었다.)

 

 

아키텍처편에서는 이키텍처의 개념과 애자일 개발 방법론, 그리고 설계의 미래를 설명한다, 소프트웨어 아키텍처 및 애플리케이션 아키텍처 모두를 설명하는 해당 파트는 아키텍처 설계 목적과 장점 설명을 시작으로 서브시스템 분할과 레이어, 프로세스 공통화 등을 중심으로 아키텍처 설계 실현을 안내한다.

 

 


 책을 읽으며 좋았던 점은, 마무리 장에 설계의 의미와 필요성에 대한 저자의 고찰이 반영된 부분이다. (시대에 유행하는 방법론에 따라 다양한 방식으로 개발 방법이 변화되어 왔는데, 현재의 개발 방법론의 대세는 애자일 방법론이다.) 설계의 필요성에 관한 찬/반 의견, 이에 덧붙이는 저자의 생각과, 더 나아가 설계의 미래에 대한 고민이 현업 개발자들이 종종 언급하는 내용과 상통하여 다시 한 번 '설계'에 대한 생각을 정리 할 수 있게 한다.

 

코딩을 넘어선 '개발'에 대해 더 깊이 알고 싶은 개발자 혹은 개발자가 코딩 이외에 무엇을 고민하는지 알고 싶은 모든이들에게 설계의 본질을 알려주는 '소프트웨어 설계의 정석' 일독을 추천한다.

 

 

 

 

  "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

책을 읽다보니 소프트웨어 설계를 어떻게 할 것이며, 어떤 방법들이 있고, 외/내부 설계 등
책에서 다루는 내용들이 대학 시절 수강했던 '소프트웨어 공학' 과목과 겹쳐서 그 때 기억이 많이 났습니다.
진정한 Reader(자료를 읽기만하셨던) 교수님 수업이여서, 고생하면서 암기로만 공부했던 나쁜 기억이 많이 떠오르네요.

 

해당 시절을 생각하면서 책을 읽으니 그것보단 10배는 나은 느낌 입니다.
일본 개발 산업계에서 오랫동안 경력을 가진 컨설턴트로서 상세히 내용을 서술한 것도 있고,
(한국에는 정발되지 않았었지만) 일본에서는 이번에 새롭게 개편 된 책인 만큼 완성도가 높습니다.
그래서 그런지 읽으면서 이걸 대학교재로 썼으면 오히려 좋지 않았을까 하는 생각이 많이 들었습니다.

 

"한빛미디어 [나는 리뷰어다] 활동을 위해서 책을 제공받아 작성된 서평입니다."

올바르게 동작하고 비즈니스 목표에 부합하는 소프트웨어를 구현하기 위해서는 무엇보다 설계가 중요하다. 소프트웨어 공학의 태동기 이래로 소프트웨어 설계에 대한 중요성은 항상 강조되어 왔지만, 정작 제대로 소프트웨어를 설계하기 위한 실천적인 지식과 방법을 배우기 어려운 상황이 고스란히 이어져 왔다. 눈에 보이지 않는 소프트웨어의 본질적인 특성과 다양한 복잡성이 내재되어 있는 제약이 언제나 소프트웨어 설계를 어렵게하는 요인으로 작용해 왔고, 경력과 연륜을 갖춘 노련한 대가에 의해 훌륭한 소프트웨어 설계가 이뤄져 왔도 해도 과언이 아니다. 그렇다면 소프트웨어 설계를 누구나 쉽게 시작할 수 있는 방법은 없는 것일까? 이 물음에 대한 답을 제공하기 위해 오늘 소개하는 서적과 함께 이야기를 풀어 나가 보려고 한다.

 

 

이 책은 입문 편, 설계 편, 아키텍처 편 등 총 3개의 큰 흐름으로 구성되어 있다. 입문편에서는 설계에 대한 가벼운 이야기를 시작으로 개발자로서 설계자로 나아가는 방향과 관련된 저자의 깊은 생각과 조언이 온전히 가슴에 와닿았다. 한편 설계 편으로 넘어가면서 설계의 목적과 외부 설계, 내부 설계 등으로 나뉘어 본격적인 설계와 관련된 심도 깊은 이야기가 전개된다. 설계 대상, 프로젝트를 진행하면서 맞닥뜨리는 다양한 어려움 그리고 본질적인 설계의 목적과 나쁜 설계, 설계를 위한 접근법 등 결코 가볍지 않은 소재의 향연이 펼쳐진다. 외부 설계 방법 섹션에서는 유스 케이스 분석을 위시하여 화면 설계, 인터페이스 설계, DB 논리 설계, 비기능 요구 사항, 인프라 설계 등에 이르기까지 개별 영역에 대한 세세한 설계와 관련된 방법론을 익히게 된다. 이윽고 내부 설계 방법에 대한 부문에서는 화면 프로그램, 비즈니스 로직, DB 물리 설계, 테스트 설계와 관련된 정수를 배우게 되며 개발 환경과 표준을 구축하며 수립하기 위해 필요한 지식과 개념 역시 학습하게 된다. 다음으로 아키텍처 편에서는 아키텍처에 대한 정의와 그를 둘러싼 개념을 풀어 나가며 아키텍처 설계 접근법에 대한 다양한 주제를 하나씩 다루게 된다. 객체 지향 설계, 서브 시스템 분할, 레이어, 의존성 주입 등으로 이어지는, 설계를 관통하는 핵심을 각각 뜯어보며 올바른 아키첵처를 구성하기 위한 본질과 맞닿게 된다. 끝으로 설계의 중요성이 다시 한 번 갈파되면서 이 책은 마무리된다.  

본 서적은 물리적으로 가볍게 구성돼 있지만 내용만큼은 결코 가볍지 않은 서적으로 평가될 수 있다. 시중에 유통되는 소프트웨어 공학 또는 설계와 관련된 책이 방대한 양과 이론으로 중무장했다면, 이 책은 소프트웨어를 올바르게 설계하기 위한 실천적인 지식과 실전적인 방법론으로 알차게 구성된 도서라 할 수 있을 것 같다. 보다 더 나은 소프트웨어 설계를 위해 고군분투하는 모든 이에게 이 책에 대한 일독을 권한다. 

 

P.S 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

한빛미디어에서 출판된 <소프트웨어 설계의 정석>은 IT 개발자라면 꼭 읽어야 할 필독서입니다. 이 책은 단순한 기능 구현을 넘어, 소프트웨어의 전체 시스템을 조망하고, 설계 역량을 강화하는 방법을 알려줍니다. 설계는 구현을 위한 준비 단계이자 성공적인 개발을 위한 중요한 기반입니다. 이 책은 그런 설계의 기본 원칙을 중심으로 유스케이스 분석, 개념 모델링, 시스템 아키텍처 등 이론적인 부분을 폭넓게 다루며, 실제 사례를 통해 그 원리를 설명합니다.

 

특히 고연차 개발자라면 다양한 설계 경험을 되돌아보고, 새로운 관점을 통해 자신만의 설계 철학을 정리할 기회를 얻을 수 있을 것입니다. 반면, 저연차 개발자에게는 소프트웨어 설계의 전반적인 흐름을 이해하고, 올바른 설계 방법을 학습할 수 있는 좋은 길잡이가 될 것입니다.

 

소프트웨어 개발에서 설계는 끊임없이 수정될 수 있으며, 처음부터 모든 것을 알 수 없는 상황에서 어떻게 설계를 진행해야 하는지를 이 책은 현실적으로 풀어냅니다. 애자일 방법론이 자연스럽게 따라오는 이유도 이 책에서 제시하는 설계 원칙과 맞닿아 있기 때문입니다. 이 책을 통해 우리는 소프트웨어 생명 주기 전반에 걸쳐 생각해야 할 설계의 중요성을 다시 한번 되새기게 됩니다. 유지보수와 기능 확장에 대비하는 설계의 필요성은 책을 읽으며 계속해서 반추하게 될 중요한 부분입니다.

 

이 책은 소프트웨어 설계의 전 과정에서 필요한 기본 원리를 다지고자 하는 개발자들에게 좋은 길잡이가 될 수 있을 것 같습니다.

 

- 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. -

『소프트웨어 설계의 정석』은 소프트웨어 개발에서 설계가 얼마나 중요한지, 그리고 설계 역량을 강화하는 방법을 체계적으로 설명한 책입니다. 이 책은 특히 초보 개발자부터 경험이 많은 개발자까지 설계 능력을 향상시키고 싶은 모든 개발자에게 유용한 지침서로 작용할 수 있습니다.

책은 크게 세 부분으로 나뉩니다.

첫 번째는 입문 편으로, 설계 역량이 커리어에 어떤 영향을 미치는지 설명하며, 설계를 잘하기 위한 기초적인 접근법을 다룹니다.

두 번째는 설계 편으로, 구체적인 설계의 목적과 방법을 다룹니다. 여기서는 유스케이스 분석, 개념 모델링, 데이터베이스 설계, 아키텍처 설계 등 실질적인 기술을 설명하며, 설계에서의 의사소통과 협업의 중요성도 강조됩니다. 마지막 아키텍처 편에서는 보다 높은 수준의 시스템 설계를 위한 아키텍처 개념을 다룹니다. 이 부분은 아키텍트로서 커리어를 쌓고자 하는 개발자들에게 특히 유용할 것입니다.

이 책의 가장 큰 장점은 설계의 기본 원칙부터 고급 설계 기술까지 폭넓은 내용을 다루면서도, 이론과 실제 적용 방법을 균형 있게 제시한다는 점입니다. 설계 이론에 머물지 않고, 구체적인 사례와 함께 실제 프로젝트에서 어떻게 설계를 적용할 수 있는지 설명해 실용적인 가치를 높였습니다.

경험이 많은 고연차 개발자라면 설계에 대한 다양한 관점을 정리하고, 자신의 방식에 대해 다시 생각해보는 기회로 삼을 수 있습니다. 반면, 경험이 적은 저연차 개발자들은 설계 과정 전반을 체계적으로 학습하면서, 기초적인 설계 원리를 확립하는 데 도움을 받을 수 있습니다. 특히 객체지향 설계와 UML에 대해 입문 수준의 지식을 가진 독자도 이 책을 통해 한 단계 높은 수준의 설계를 배우고 이해할 수 있을 것입니다.

이 책은 단순히 설계 기술을 넘어, 개발자로서 갖추어야 할 역량과 사고 방식을 키우는 데에도 중점을 둡니다. 설계는 코드 구현을 넘어 시스템 전반을 조망하고, 장기적인 유연성과 유지보수성을 고려한 큰 그림을 그릴 수 있는 능력을 요구합니다. 이 책은 개발자들이 그러한 사고를 기를 수 있도록 체계적으로 이끌어줍니다.

결론적으로, 『소프트웨어 설계의 정석』은 소프트웨어 설계에 대한 깊이 있는 이해와 실전 응용 능력을 모두 다루는 필독서입니다. 설계를 배우고자 하는 개발자들에게 더 나은 시스템을 만들기 위한 길잡이가 되어줄 것입니다.

좋은 기회로 소프트웨어 설계에 관한 책을 처음 읽게 되었다. 소프트웨어 설계에 관한 부분은 국비교육을 통해 정말 기초적인 부분만 배우고 그 이후의 부분은 실무를 통해 익히면 된다고 알려주었는데 현실은 회사 사람들 대부분이 정확하게 모르고 족보 문서를 통해서만 대강 파악만 해두고 있었다. 매 단계마다 짧게 찾아서 써먹어도 되지만 전체적인 프로세스를 알아야 과거와 미래 단계들을 조율할 수 있기 때문에 언젠가 꼭 배워야겠다고 생각했다.

목차는 크게 3파트가 있다. 입문/설계/아키텍처 자세히는 설계의 목적, 외내부 설계 방법, 아키텍처의 목적, 아키텍처 설계 접근법, 설계에 관한 저자의 생각들이 있다.

내용은 각 파트별로 설계 시간순으로 무엇을 해야하는지, 어떻게 작성해야하는지를 여러 도표와 그림을 통해 상세히 알려준다. 개인적으로 가장 중요하게 본 부분은 초반부에서의 IT 프로젝트의 프로세스와 구성 부분이다. IT 역사와 연관지어서 그동안 설계 방법론과 원칙이 어떻게 변화되어왔는지를 알려줌과 동시에 저자가 중요하게 생각하는 애자일 방법론이 왜 대세이고 자세하게 배워야하는지를 논리적으로 알 수 있었다.

그리고 챕터 중간마다 박스 부분으로 저자가 중요하다고 생각하는 부분은 자세하게 본인의 경험에 빗대어 부가 설명을 해주어서 나중에 다시 찾아볼 때 도움이 될 것 같다.

마지막에 저자가 맡았던 직무인 CTO의 역할과 더불어 비즈니스X테크놀로지 세계에 살아가고 있는 개발자가 가져야할 마음가짐을 알려주는데 중요한 동기부여가 되었다. 개발자의 전반적인 업무 프로세스와 인사이트를 얻고 싶은 분들에게 이 책을 한번 읽어보라고 추천하고 싶다.

"한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

#한빛미디어 #나는리뷰어다 #애자일 #요시하라쇼자부로 #소프트웨어설계 #이혜영

[BOOK] 소프트웨어 설계의 정석 - 요시하라 쇼자부로 지음 / 이해영 옮김

 

부제: “변화하는 기술 환경에서도 흔들리지 않는 설계의 기본 원칙”

 

좋은 설계를 책으로 배울 수는 없겠지만 '설계'라는 것이 무엇인지는 책을 통해 배울 수 있습니다. "소프트웨어 설계의 정석"에서는 '설계'를 중심으로 소프트웨어 개발을 다룹니다. '설계'와 밀접한 개발 프로세스, 설계에 대한 방법론, 아키텍처 설계를 이야기 합니다. 저자는 10년 전에 이 책의 1판을 출판하고 10년간 바뀐 내용들을 보강해서 2판을 출판했다고 합니다. 국내에는 처음으로 2판이 번역되어 출판되었습니다. (10년 전에 만났어도 좋았을 것 같습니다.)  '근본'적인 내용은 크게 바뀌지 않습니다. '설계'의 기본을 잘 닦아두면 오랜시간 잘 활용하게 될거에요.

 

"한빛미디어 [나는 리뷰어다] 활동을 위해서 책을 제공받아 작성된 서평입니다."

해당 책은 일본에서 초반이 발행되고(국내 출간은 안됨) 이번에 2판이 나온 책입니다.

기존에 변하지 않는 원칙에 대한 부분은 항샹 유효합니다. (모듈화, 재사용성, 유연성등의 설계원칙)

그 이후에 기술환경 속에서도 안정적으로 지속 가능한 새로운 부분도 추가되어서 설계의 정석이라고  할수 있는 부분은 설명합니다.

 

이번 개정판에서는 그동안 변화한 표준 프레임워크와 도구에 대한 설명을 새롭게 정의했습니다.

프레임워크에는 스프링부트를 채택하고, RESTful과 GraphQL을 이용한 API설계 및 아키텍처 설명에서는 MSA도 추가하였습니다.

애자일 개발에 대해서도 저자분의 경험을 통한 설명이 추가되었습니다.

현 시점에서 가장 많이 사용하고, 관심이 있는 기술 요소를 기반으로 책의 내용이 설명되어 지는 부분은

이번 최신 출간된 책의 장점이라고 생각되어 집니다.

 

 

 

 

 

 

 

 

 

■ 책의 구성

총 3편으로 되어 있습니다.

입문 / 설계 / 아키텍처 편으로 구성되어 있습니다.

입문의 내용을 살펴보면, 다른책과 조금 다른 편안한 분위기로 누구나 공감을 하는 내용을 기반으로 책의 공감대를 이끌어낸다는 생각이 많이 들었습니다.

 

책에 소개되어진 내용입니다. 큰 구성에 대해서 설명하고 있는 부분이여서, 이 책을 통해서 최종 아키텍처를 구성하는 과정까지

어떻게 이어져 있는지 소개되는 부분이라서 읽어보시면 좋을거 같습니다.

 

 

 

 

각자 서비스 필요한 부분을 선택적으로 읽어도 문제없는 구성입니다.

설계를 잘 하기 위한 3가지 큰 주제로 저자분은 아래와 같은 항목을 제시합니다.

1) 설계의 목적을 정확히 파악하는 것

2) 설계의 필요한 최소한의 테크닉을 알아야 한다는 것

3) 제대로 된 의사소통을 하는 것

이 3가지 중심으로 구성되어 있고, 설계에 필요한 최소한의 지식으로 다음 네가지를 중점적으로 다룹니다.

☞ 유스케이스 모델

☞ 개념 모델

☞ 데이터베이스 설계

☞ 아키텍처 설계

 

 

■ 설계 대상

보는 사람들의 관점마다 설계의 구조와 대상이 달라질수 있다고 생각되지만, 분명한 범주가 있고 대상이 있습니다.

 

 

 

☞ 설계의 대상은 범주가 넓고 포함하는 대상이 많이 있습니다.

이 책에서는 애플리케이션, 미들웨어, 데이터베이스 부분 Stack의 "소프트웨어 설계" 부분에 대한 설명을 합니다.

 

· 설계를 담당하는 사람은 누구인가?

설계를 해야 하는 사람에 대해서 정의 하기 앞서 책에서 프로젝트 및 개발 프로세스에 대해서 다시한번 언급해줍니다.

이러한 과정을 통해서, 각 상황이 다른 시점에서 어떤 사람이 설계에 대한 Role을 가지고 역활을 수행할지

고려할수 있는 부분을 언급합니다.

☞ 워터풀 개발, 점진적 개발, 애자일 개발 등 대표적인 개발 프로세스 중에 이책에서는 점진적 개발 방식을 통해서 첵에 필요한 개발설계의 방향을 잡고 있습니다.

 

 

 

 

· 설계의 목적

· 요구 사항의 기능요건, 비기능 요건

· 설계 접근법 : 외부설계, 내부설계

· 객체지향설계, 플로차트, DFD

· 개념모델 작성법, 화면설계법

· 데이터베이스 논리 설계

 - 1,2,3정규화 및 기본키 결정, 보이스코드 정규화, 외래키, 다대다 관계 설정, NoSql설계 등에 대해서 데이터베이스 설계시  고려해야 하고, 이론적으로 고려해야 하는 내용이 있습니다. DB설계시 반드시 알아야 하는 부분이 중요한 사항을 기준으로 잘 설명되어 있습니다.

· 비기능 요구사항에 대해서도 많은 부분을 다룹니다.

 - 평귱 장애 간격, 처리량/대기시간, 유지보수성, 이식성, 보안등에서 다양한 키워드들이 제공되고 정의되어 있습니다.

 

 

 

 

■ 4장. 내부 설계 방법

해당 Chapter에서는 기본적으로 SW 개발자분들이 가장 많이 접하고, 많이 고민하고 검토하시는 내용으로 구성되어 있습니다.

내부설계라고 하면 어색한 단어라고 생각이 들수 있는데, 상세설계라고 이해하시면 됩니다.

 

아래의 사항에 대해서 설계 관점으로 하나하나 체크해봅니다.

 

 

 

· 예제는 SpringBoot를 기반으로 설명을 진행합니다.

 - Controller 설계를 할때 수행처리할

    요청 파라미터의 유효성 체크

    요청 파리미터 획득

    비지니스 로직 호출

    응답에 대한 데이터 설정

    화면 전환 등을 담당합니다.

· http 세션 설계에 대해서도 무상태 프로토콜에서 상태를 유지하기 위해서 설계 구성시 반드시 고민해야 합니다.

  서버가 여러대 있을때, 해당 session clustering에 대한 부분이 중요합니다.

· 비지니스 로직 구성시, DB정보 조회시 고려 사항

  - 트랜잭션 스크립트 패턴

  - 도메인 모델 패턴

  - DAO 패턴

  - 트랙잭션 제어

  - 커넥션 풀 

  및 성능을 위해서 DB의 쿼리 plan에 대해서도 설계시 고려해야 할 내용이 설명되어져 있습니다.

 

■ 아키텍처 설계

· 아키텍처 정의 및 기본적으로 접근방법

· 객체지향 설계, 서브시스템 분할, 레이어 아키텍처에 대한 내용이 있습니다.

  레이어 아키텍처에 대해서 어떤 기준으로 Presentation, Domain, Data Source에 대한 부분이 있고, 자바에서 레이어 구현 및 레이어의 문제점에 대해서도 구성합니다

· DRY 공통처리를 위해서 접근하기 위한 방법등이 있습니다.

 

 

최신의 기술 트랜드 및 개발 방법론의 내용이 포함되어 있고, 소프트웨어 설계시에 고려해야 하는 부분이 책에 잘 표현되고

개발설계시 고려하지 못한 다양한 부분을 살펴볼수 있는 좋은 책이 출간 된 것 같습니다.

 

이 책은 설계가 필요한 이유와 다양한 접근법을 설명하며, 설계의 본질을 강조합니다.
그리고 설계의 기초를 단계별로 설명하여, 각 단계에서 고려해야 할 요소들을 자세히 다룹니다.
유스케이스 분석, 개념 모델링, 내부 및 외부 설계 방법론 등 실무에 적용 가능한 구체적인 사례와 과정을 제시합니다.
또한 기술 발전에 따른 설계 방식의 변화에도 불구하고, 기본 원리는 변하지 않습니다. 이에 최신 트렌드와 전통적인 방법론을 조화롭게 설명합니다.
소프트웨어 설계라고 해서 어렵고 딱딱한 책일 줄 알았는데 저자가 현장에서 직접 겪은 다양한 경험을 바탕으로 알기 쉽게 잘 설명하여 이해하기 쉽고 접근하기도 어렵지 않은 책이었습니다.
그리고 소프트웨어 설계에서 가장 기초가 되는 부분부터 시작해서 실무에서 사용되는 방식까지 다루고 있어 설계와 개발의 방향성에 큰 도움을 줄 것입니다.
소프트웨어 설계를 어떻게 접근해야 하는지 고민해 볼 수 있는 좋은 참고 도서이니 초급 개발자부터 숙련된 고급 개발자 모두에게 추천합니다!!

 

 

한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

“소프트웨어 설계의 정석” 은 기술이 끊임없이 변화하는 환경 속에서도 변하지 않는 설계의 근본 원칙을 설명하는 책으로, 견고한 소프트웨어 개발을 위한 중요한 통찰을 제공합니다. 설계의 목적을 정확히 이해하고, 필수적인 테크닉을 습득하며, 효과적인 의사소통을 통해 성공적인 시스템 설계를 이끌어내는 방법을 강조합니다. 책은 입문, 설계, 아키텍처로 나뉘어 초보자도 쉽게 이해할 수 있도록 구성되어 있으며, 개발자뿐만 아니라 비즈니스 분석가 등 다양한 이해관계자들에게도 실질적인 도움이 될 수 있습니다. 프로젝트 성공을 위한 든든한 지침서가 될 이 책은, 모든 소프트웨어 개발자들에게 필수적인 참고서가 될 것입니다. 

한빛미디어 <나는리뷰어다> 활동을 통해 책을 제공받아 작성된 서평입니다.

우선 저는 프로그램을 개발하며 설계를 직접 하고 있습니다.
회사 내에 PM직책이 따로 없고, WPF로 개발을 하고 있다보니 프론트와 백엔드를 동시에 개발해야 합니다.
 
이 책을 읽으며 가장 마음에 든 부분은 설계와 견적에 대한 부분입니다.
프로젝트 초창기에 가장 많이 듣는 말은 "이거 얼마나 걸릴거 같아?", " 많이 어려운거야?" 로 손꼽을 수 있습니다.
기능 점수 방식을 사용하면 외부 인터페이스와 내부 데이터간의 입출력을 통해 설계의 난이도를 측정해 해당 수치를 토대로 견적산출이 가능합니다.


트랜잭션 기능과 데이터 기능에 대한 설명을 보면서 외부에 대한 입력과 출력 논리 파일등에 대한 자세한 설명이 있었다면 좋겠다는 생각이 들었습니다. 해당 내용은 책의 내용 중 일부분일 뿐이니 어쩔 수 없겠지만요.. 

 

외부 설계와 내부 설계는 다양한 설계 관련한 책에서 본 내용과 유사했습니다.
DI,CD 의 내용이 있었고, 상속과 캡슐화를 잘 사용하자는 내용 등등..
하지만 이 책은 다른 책과는 다르게 DB부분 설계를 강하게 어필합니다. 제가 DB를 자주 쓰지않고 간단한 CRUD만 사용하기 때문에 좀 어려웠지만 DB 설계를 중점으로 하신다면 좋은 배움을 받을 수 있다고 생각합니다.

 

이 책은 설계에 관한 책을 많이 본적없는 사람들이 키워드를 파악하기 위해 읽는다면 아주 좋은 책으로 보입니다.
키워드 별 간단하게 이해 할 수 있도록 설명해 설계를 할 때 이런게 필요하구나 파악 할 수 있게 해줍니다.

 

"한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
 

"한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 제공 받아 작성된 서평입니다."

제목 그대로 소프트웨어 설계에 대한 전반적인 내용을 알기 쉽게 풀어 쓴 책이고

CS 기본 지식들이 설계단계에서 어떻게 연결 되는지도 알수 있어서 좋았습니다.

https://developer-as-job.tistory.com/45

    “한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”

 

 '소프트웨어 설계의 정석'은 소프트웨어 설계에 관한 전반적인 지식이 담겨있는 지침서이다. IT 종사자라면 설계에 대한 지식은 필수적이라고 볼 수 있다. 저자는 이 책의 대상 독자로 '시스템 개발에 종사하는 개발자'를 꼽았으나 책을 읽을수록 전 IT 직무가 읽으면 좋겠다는 생각이 든다. 설계에 대한 기본 지식과 전 영역을 이해할 수 있는 내용이 들어있다. 저자 자체가 컨설턴트이기 때문에 필자에게는 설계뿐만 아니라 직무적인 차원에서의 접근 방식을 살펴볼 수 있는 기회도 되었다.


 요구사항 정의와 설계에 대한 방법론은 오래전부터 이어져 왔다. 이러한 방법론을 터득하는 것은 소프트웨어 생명 주기의 기본을 다지는 것이라고 볼 수 있다. 저자는 설계를 하기 위해 세 가지가 필요하다고 언급했다. 첫째는 '설계의 목적을 정확히 파악하는 것', 둘째는 '설계에 필요한 최소한의 테크닉을 알아야 한다는 것', 셋째는 '제대로 된 의사소통을 하는 것'이다. 이러한 관점은 저자의 설명 군데군데 녹아 있다. 설계에 필요한 최소한의 지식으로는 유스케이스 모델, 개념 모델, 데이터베이스 설계, 아키텍처 설계를 꼽았다. 다양한 측면에서의 설계를 살펴보면서 전반적인 업무를 익힐 수 있다.


 초반부에서는 IT 프로젝트의 업무 프로세스와 구성에 대해 설명한다. 프로젝트 매니저와 PMO에게도 도움이 될만한 지식이 많았다. 책에는 PMBOK에 대해 간략하게 소개되어 있었다. PMBOK는 미국의 비영리 단체인 PMI(Project Management Institute)가 제정한 프로젝트 관리의 지식 체계이다. 8개의 프로젝트 성과 영역으로 프로젝트를 계획, 실행, 관리하고자 하여 완성도 높게 프로젝트를 관리할 수 있다. PMP(Project Management Professional) 자격증도 PMBOK에서 부여한다고 한다. 당장에 진행하고 있는 프로젝트를 파악하는 것도 빠듯하겠지만 이러한 방법론과 체계가 더 좋은 양분이 되어주리라 믿는다.


 최근 어떤 상무님이 갑작스레 내게 워터폴과 애자일 방법론에 대해 설명해 보라고 했다(면접 질문인 줄..). 추상적으로는 인지하고 있었지만 개념을 정리한 적은 없었던 터라 명확한 답변보다는 사례 위주로 장황하게 얘기했더랬다. 아쉬운 답변을 말한 이후였던지라 개발 방법론의 정의를 여느 때보다 주의 깊게 읽어보았다. 워터폴 개발 / 점진적 개발 / 애자일 개발이 표로도 명확하게 정의가 되어 있고, 그 뒤에 자세한 설명이 더해져 있어서 확실하게 정리가 되었다. 저자는 워터폴 방법론에는 한계가 있다고 보고 애자일 개발론에 우호적이라고 했다. 그렇기에 책에서 전제로 하는 개발 프로세스는 애자일 개발론을 전제로 한다. 업무 프로세스 > 유스케이스 추출 > 이터레이션(이터레이션 계획 - 유스케이스 분석 - 설계 - 개발) > 통합 테스트 > 릴리스 순의 프로세스를 생각하면 된다.


 설계는 크게 외부 설계와 내부 설계로 나누어진다. 외부 설계는 시스템의 구체적인 기능을 설계하는 것으로 사용자나 외부 시스템에 제공하는 기능, 인터페이스 등이 이에 해당한다. 외부 설계에서 입력과 출력이 결정되고, 내부 설계에서는 입력과 출력 사이에서 이루어지는 내부 처리를 설계한다. 데이터 처리 방법, 관리 방법, 병렬 처리 방법, 트랜잭션 방법, 물리 데이터베이스 등을 설계한다. 외부 / 내부 설계 방법은 각각의 작업과 결과물을 중심으로 상세히 설명된다. 가령, 외부 설계 중 데이터베이스 논리 설계 작업과 그 산출물인 논리 ER 다이어그램을 설명하거나 내부 설계 중 물리 데이터베이스 설계와 물리 ER 다이어그램에 대해 설명하는 식이다. 작성 방법 또한 소개되니 실제 업무를 수행함에 있어 용이할 것이다.


 


< 종합 평가 > 

1. IT 전 직무가 읽어야 할 필독서 - 저자는 다양한 프로젝트에서 개발 경력을 쌓고 아키텍트, 컨설턴트로 활약했다. 프로젝트에 관련한 다양한 직무 관점으로 프로젝트 사이클과 전반적인 업무를 이해할 수 있다.

2. 인사이트 - 저자의 인사이트가 책 중간중간 녹아있다. 이론 혹은 정설보다는 저자가 몸으로 체득하거나 가슴으로 느낀 것들을 담아내어 더욱 공감이 가고 흥미롭게 느껴졌다.

3. 전문 서적 추천 - 소프트웨어 설계의 정석에는 설계에 대한 전반적인 지식이 담겨있다. 그렇기에 소개되는 모든 기술과 방법론의 깊이가 깊지는 않다. 저자는 이에 대해 본인이 알고 있는 전문 서적 혹은 지식 커뮤니티를 추천하는 것으로 이를 보완한다. 책을 읽다 더 깊이 파고들고 싶어지는 부분이 있다면 저자의 추천을 따라 학습할 수 있어 완성도 높은 학습을 할 수 있다.

 

한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

설계라는 영역의 세부 분야에 대해서 다루는 책은 많다, 아키텍처, UML, RDB 설계, 각종 개발 방법론, 프레임워크 개론 등, 제목만 붙여도 생각나는 책들이 많이 있다. 그러나 이들을 하나로 묶어내어 프로젝트가 진행되는 전체 과정을 다루는 실체는 대부분 다루지 않는다. 정답이 없는 영역이다. 그러나 저자는 프로젝트가 진행되는 큰 흐름을 한 호흡으로 설명한다.

 

IT 프로젝트는 크게 소프트웨어 설계와 인프라 설계로 나뉜다. 소프트웨어 설계는 다시 어플리케이션 설계와 데이터베이스 설계로 나뉜다. 이 책에서는 이 두가지 범위인 소프트웨어 설계에 대해서 다룬다.

 

설계는 막연히 뛰어드는 것이 아니라 요구사항 정의서를 토대로 구현의 방법과 명시되지 않은 내용 그리고 이해관계자들을 위한 정보공유가 목적이 되어야 한다고 저자는 말한다. 여기서 구현의 방법에 대한 내용은 다시 내부 설계로 이어지고, 명확하지 않은 내용들은 시스템 기능으로 외부 설계로 이어진다.

 

개발 프로세스에 대해서 저자는 점진적 개발 이라는 개발론을 소개한다. 점진적 개발이란 워터폴과 같이 완벽함과 확정을 요구받는 방법도 아니고, 애자일 같이 스크럼이나 XP같은 관리를 위한 방법론도 아니다. 각 Task에 따른 산출물을 가지고 다음 Task를 병렬적으로 개발하는 방법론이다. 하나의 Task에는 유스케이스 분석, 설계, 개발이 포함되어있다. 이를 반복하여 최종에 테스트 후 릴리즈하는 방식을 말한다.

 

외부설계는 시스템의 구체적인 기능을 설계한다. 다른 시스템과의 인터페이스나 화면이 여기에 포함된다. 구체적인 기능을 구현해야 하므로 유스케이스 분석 및 정의 또한 이 과정에서 이뤄진다.

 

유스케이스에 이어서 개념 모델링을 한다. 개념 모델이란 시스템의 정적인 구조다. 유스케이스에서는 개념간 관계나 종속관계가 표현되지 않는다. 개념 모델링은 이 연관관계를 표현한다. 엔티티 설계와 다르게 메소드나 자료형은 아직 포함하지 않는다. 책에서는 주문, 상품, 결제를 예로 들어 개념모델링을 한다. 이어서 화면 레이아웃이라고 부르는 화면 설계서와 데이터베이스 모델링까지 소개한다. 개인적으로 마음에 들었던 부분은 객체지향과 RDB는 개념이 사상되지 않는데 클래스 설계와 테이블 설계의 다형성과 DB성능에 따른 비교표를 첨부해줘서 좋았다.

 

이어서 비기능 요구사항 정의에 대해서도 설명한다. 유스케이스나 모델링 같이 요구사항과 연관되지 않은 스팩을 비기능 요구사항 정의라고 한다. 어플리케이션 수준에서는 SLA에 대해서 설명하고, 이를 산출하는 수식과 운영시간을 보장하기 위한 이중화 방안도 소개한다.

 

내부설계는 외부설계에서 정해진 입력과 출력 사이의 내부처리를 정한다. 예를들어 웹 어플리케이션이라면 컨트롤러, 비즈니스 로직, 엔티티 클래스, ERD 등이 여기에 포함된다.

 

책에서 또 재미있게 봤던 부분인데 Service 레이어에 메소드 단위로 트랜잭션을 묶는것이 일반적인데 책에서는 이같은 방식을 비즈니스 로직의 처리를 공통화 하는것이 어렵다고 설명하며 다형성을 구현할 수 없다고 설명한다. 그러므로 비즈니스 로직이 파편화되는 문제가 발생한다고 한다. 다만 대부분의 경우에서 설계를 단순화 할 수 있기 때문에 절차식으로 기술하는 트랜잭션 스크립트는 널리 쓰이고 있다. 요즘 많이 보이는 엔티티에 비즈니스 로직을 포함하는 도메인 모델 패턴에 대해서 설명한다. 다만 엔티티에 비즈니스 로직이 포함되므로 패턴을 이용해 클래스를 분리하는것이 좋다고 설명한다.

 

아키텍처 설계 편에서도 객체지향 설계, 서브시스템, 레이어 아키텍처 등을 포함해 이러한 소프트웨어 아키텍처 설계가 생겨난 이유를 거시적인 관점에서 설명하는 점에서 신선했다.

 

책의 마지막에 이르면 다시 설계의 본질에 대해 이야기한다. 설계는 비효율적이고 검증이 불가능 한것이라는 주장도 있다. 그러나 공학적 관점에서는 동일한 것을 다시 만들기 위해서 설계가 있어야 하고, 개발자의 관점에서는 정보공유 차원에서 설계는 필요하다고 한다. 현장에서는 요구사항 정의, 명세 변경, 일정한 품질을 위해서 설계는 반드시 필요하다. 개인적으로는 이 파트는 모든 개발자들이 읽어봤으면 한다.

 

개인적으로 과거에는 유지보수 측면에서 개발업무를 수행 했다면 근래는 기존 기능의 유지보수 보다는 새로운 기능을 추가하는 업무를 자주 하게 됐다. 그러다보니 어플리케이션 수준에서 모델링, 구현 패턴, 리팩토링 스킬은 꾸준히 사용하고 있지만, 머지않은 미래에 매니징을 하게 될텐데 프로젝트, 업무, 이슈를 어떤 기준을 가지고 매니징을 해야할지 모호한 부분이 있었다. 이 책을 제공받아 읽게 되었는데 뜻하지 않게 ‘개발의 관점’이 아닌 ‘프로젝트의 관점’에서 적정 수준의 선택을 할 수 있는 인사이트를 얻을 수 있었다.

 

한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

열심히 개발을 하다보면 내가 뭘 개발하고 있지? 하는 때가 있다.

방대한 프로젝트 안에서 길을 잃어버리게 되는데

제대로된 설계가 있다면 프로그램을 더 쉽고 깔끔하게 만들 수 있으며 실수도 줄일 수 있다!

평소에 알고있지만 간과했던 여러 내용들을 다시 한번 상기시키며 다음 프로젝트를 준비하게 만드는 책이다.

우수한 설계자라면 우수한 프로그래머일 가능성이 높다.”

"한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

건축가가 멋진 건물을 짓기 전에 설계도를 꼼꼼하게 그리듯이, 소프트웨어를 만들기 전에 어떤 기능을 어떻게 구현할지 미리 계획하고 실행하는건 중요하다. 튼튼하고 오래 사용할 수 있는 건물을 짓기 위해 설계도가 필요한 것처럼, 소프트웨어도 마찬가지다. 설계와 아키텍처는 소프트웨어의 구조와 동작을 정의하며, 이는 시스템의 성능, 확장성, 유지보수성에 직접적인 영향을 미친다. 잘 설계된 아키텍처는 시스템이 변화하는 요구사항에 유연하게 대응할 수 있도록 하며, 유지보수와 확장이 용이해진다.

소프트웨어 설계는 개발 과정에서 발생할 수 있는 문제를 사전에 예방하는 데 중요한 역할을 한다. 예를 들어, 나쁜 설계는 코드의 복잡성을 증가시키고, 버그 발생 가능성을 높이며, 개발 속도를 저하시키는 반면, 좋은 설계는 이러한 문제를 최소화하고, 개발자들이 효율적으로 작업할 수 있는 환경을 제공한다.명확한 아키텍처는 각 팀원이 자신의 역할과 책임을 명확히 이해할 수 있게 하며, 이는 프로젝트의 일관성과 품질을 높이는 데 기여함은 물론, 시스템의 전반적인 구조를 시각화하여, 이해관계자들이 시스템의 동작을 쉽게 이해하고, 효과적인 의사결정을 내릴 수 있도록 돕는다.

이런 점에서 이 책은 소프트웨어 설계와 아키텍처에 대한 깊이 있는 이해를 제공하고 생각할 수 있게 한다. 초보자부터 숙련된 개발자까지 두루두루 유용한 내용을 담고 있으며, 실무에서 바로 적용할 수 있는 다양한 방법론과 기법을 체계적으로 설명하고 있다.

PART 1 입문 편에서는 설계자로 가는 길, 개발자로서 느끼는 보람, 그리고 개발자의 커리어에 대해 다룬다. 이 부분은 특히 초보 개발자들에게 유용하며, 개발자로서의 경력 개발과 성장 경로에 대한 명확한 방향을 제시한다. 설계자로서의 첫 발을 내딛는 데 필요한 기본적인 지식과 태도를 잘 설명하고 있어, 쉽게 이해할 수 있을만한 내용이다.

PART 2 설계 편은 설계의 목적, 외부 설계 방법, 내부 설계 방법 등 구체적인 설계 방법론을 다룬다.

이 부분은 실무에서 바로 적용할 수 있는 다양한 기법을 소개하며, 특히 유스케이스 분석, 개념 모델링, 화면 설계, 데이터베이스 설계 등 실제 프로젝트에서 자주 사용되는 기법들을 상세히 설명한다. 또한, 나쁜 설계의 사례와 문제점을 통해 잘못된 설계를 피하는 방법을 제시하고 있어, 실무에서의 실수를 줄이는 데 큰 도움이 될 내용이 담겨 있다.

PART 3 아키텍처 편에서는 아키텍처의 목적, 아키텍처 설계 접근법, 그리고 설계의 미래에 대해 다룬다.

이 파트는 특히 숙련된 개발자들에게 유용할 것 같다, 객체지향 설계, 서브시스템 분할, 레이어 아키텍처, 마이크로서비스 등 현대 소프트웨어 개발에서 중요한 아키텍처 패턴과 원칙을 깊이 있게 다루고 있다. 또한, 설계와 프로그램의 추적성, 의존성 주입 등 고급 기법들을 통해 더 나은 소프트웨어를 개발하는 방법을 제시한다.

이 책의 장점은 이론과 실무가 잘 조화를 이루고 있다는 점이다. 각 장은 이론적인 설명과 함께 실제 사례와 예제를 통해 이해를 돕고 있으며, 실무에서 바로 적용할 수 있는 구체적인 방법론을 제시한다. .

결론적으로, 이 책은 소프트웨어 설계와 아키텍처에 대한 깊이 있는 이해를 제공하며, 초보자부터 숙련된 개발자까지 모두에게 유용한 내용을 담고 있어, 실무에서 직면하는 다양한 문제를 해결하는 데 필요한 지식과 기술을 체계적으로 설명하고 있다.

본인은 소프트웨어 개발 보다는 하드웨어 설계 업무의 비중이 높아서인지 책을 통해 많은 도움을 받았다. 최근에 업무 필요성으로 데이터 베이스 설계 관련 필요 했는데 책을 통해해 더 나은 설계와 아키텍처를 구현하여, 고품질의 소프트웨어를 개발할 수 있을 것 같다.

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.


 


생각보다 무겁지 않습니다.
제목에 '정석'이라는 단어가 있어서 딱딱할 거라 생각할 수 있지만 걱정하지 않아도 됩니다.
성격 좋고 경험 많은 선배와 차 한잔 마시며 가볍게 고민 상담하는 분위기랑 비슷합니다.
현장에서 겪으며 익힌 소프트웨어 설계에 관한 내용입니다.


무겁지 않습니다

설계, 아키텍처, 방법론 자료를 찾다 보면 선뜻 접근하기 쉽지 않습니다.
방대한 범위, 빽빽한 내용, 만만찮은 분량에 '과연? 이걸? 내가?' 하는 생각이 저절로 듭니다.
우리가 원하는 건 프로젝트 성공입니다.
이를 위해 위해 알아야 할 것, 필요한 것, 생각해봐야 할 것으로만 짜여 있습니다.
부담 없이 읽을 수 있습니다.


대상이 분명합니다

설계를 하다 보면 같은 말인데 서로 다른 얘기를 할 때가 있습니다.
동일한 대상을 얘기하지만 각자 머릿속에 그리는 이미지가 다르기 때문이라 생각합니다.
이런 상황을 벗어나고자 다양한 문서를 만듭니다.
일종의 결과물인데, 자칫하면 주객이 바뀝니다.
결과물을 어떻게 만들고, 무엇을 만들어야 하는지 알려주는 부분은 거의 없습니다.
소프트웨어 설계에만 초점을 맞추고 있습니다.


전체를 살핍니다

다양한 이유로 설계는 수정될 수 있습니다.
프로젝트에 필요한 모든 걸 아는 상태에서 설계하면 좋겠지만 그럴 수 없다고 알려줍니다.
애자일 방법론이 자연스럽게 따라옵니다.
'처음부터 동작하는 소프트웨어, 변화에 대응'처럼 좋은 내용을 담고 있습니다
그러면서 '이걸로 충분할 걸까?' 하고 되짚어 보게 합니다.
소프트웨어 개발이 끝나면 개발팀은 해산하지만, 진짜는 그때부터 시작됩니다.
사용하며 발생하는 유지보수와 기능 확장은 반드시 있습니다.
그렇기에 소프트웨어 생명주기 전체에 걸친 설계를 얘기합니다.

 

여러 가지를 생각하게 하는 책입니다.
소프트웨어가 역할을 다하려면 어떤 설계가 필요한지 알려주는 좋은 길잡이라고 생각합니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

이 책의 가장 큰 장점은 실제 업무에 밀접하게 연관된 내용만을 하루고 있다는 점입니다.

이론, 역사, 부차적인 내용은 최소화 한 상태로 실제업무를 바로 옆에서 보는 듯한 생생함이 좋았습니다.

 

이 책이 유용하다고 생각하신 독자 분들은 2023년에 나온 `프로덕트 - 유저를 사로잡는 서비스 기획`을 함께 보시는 것을 추천합니다. 서비스 기획과 기획된 내용을 어떻게 설계작업을 진행하는지를 모두 경험하며 유용한 조언들을 함께 얻으실 수 있으실 겁니다.

※ 본 리뷰는 IT 현업개발자가, 한빛미디어 책을 제공받아 작성한 서평입니다.

말 그대로 소프트웨어의 정석을 노리는 책이다.

이 책을 읽게된 계기는 한빛미디어 나도 리뷰어다 프로그램에 참여하게 되면서 였다.

두권의 책 중 하나를 선택하게 되는데, 나는 이 책과 AI에 관한 책을 골랐던 걸로 기억한다.

무튼 이 책이 나에게 왔고 나는 이 책을 읽었다.

하지만 막상 많은 내용이 기억에 남지는 않았다. 아무래도 설계라고 하는 부분이

크게 와닿지 않아서 그런 것이 아닐까 싶었다.

절실함이 부족해서 일 수도 있겠다.

만일 프로그램 설계를 할 일이 있다면 이 책이 크게 도움이 될 수 있겠다는 생각이 들었다.

 

이 책은 크게 입문편과 설계편, 그리고 아키텍쳐 편으로 나누어져 있다.

아키텍쳐편은 고급에 속하는 내용으로 보이고 입문편과 설계편은 읽을만했는데

가장 기억에 남았던 부분은 DB 설계 부분이었다.

 

변화하는 SI환경에서도 안정적이고 

지속 가능한 시스템 설계를 위한 필독서라고 볼 수 있겠다.

 

"한빛미디어 < 나는리뷰어다 > 활동을 위해서 책을 제공받아 작성된 서평입니다.

이 책을 통해 여러가지를 알게 되었으며 그 중
다섯가지의 목적을 염두에 두고 설계를 한다면, 더 견고하고 유지보수 가능한 시스템을 만들고 운영이 편리할 것 같다는 생각이 들었습니다.
특히 3번의 "이해관계자 간 정보 공유" 부분을 보면서, 앞으로 프로젝트를 할 때 협업의 중요성을 더 많이 느끼고, 팀원들과 소통하는 경험을 많이 쌓아야겠다는 생각이 들었습니다.

또한 데이터베이스 논리 설계에서 정규화의 중요성에 대해 설명해주는데
정규화는 데이터베이스의 효율적인 설계와 데이터 중복 방지에 큰 역할을 하며, 데이터의 무결성을 유지하는 데 필수적인 것과  각 정규형(1차부터 5차까지)의 개념을 깊게 이해하게 되었고, 데이터베이스 논리 설계를 어떻게 만들어야 체계적이고 견고하게 만드는지 깨달은 것 같습니다.

이와 같은 내용들로 실무에 적용할 수 있는 많은 내용을 배우게 되어 매우 좋았으며 소프트웨어 설계에 대한 이해를 높이고 싶은 개발자 분들께 이 책을 추천드리며, 설계의 목적과 패턴을 명확히 이해하는 것이 얼마나 중요한지 깨달을 수 있을 것입니다. 감사합니다.

하지만 이제 생겼다 바로 소프트웨어 설계의 정석 ~ 소프트웨어 설계 시 참고할만한 책이 출간되어 너무 좋다

이 책은 소프트웨어 설계의 본질을 이해하고, 변화를 두려워하지 않는 설계 철학을 배울 수 있는 훌륭한 안내서입니다. 설계 패턴과 원칙을 학습하면서, 변화하는 기술 환경에서도 유지보수 가능한 소프트웨어를 만드는 데 필요한 통찰을 얻을 수 있었습니다. "소프트웨어 설계의 정석"은 초보자뿐만 아니라, 경험 많은 개발자와 아키텍트에게도 깊이 있는 지식을 제공하는 책입니다. 특히, 실용적인 예제와 사례를 통해 설계에 대한 자신감을 키울 수 있었습니다.

  "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 상품명 :
소프트웨어 설계의 정석
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
소프트웨어 설계의 정석
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
소프트웨어 설계의 정석
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 책0