[책 리뷰] – 소프트웨어 설계의 정석

소프트웨어 설계의 정석

누군가가 설계해 준 프로그램을 만드는 것에서 벗어나 나만의 소프트웨어를 설계하는 것의 중요성을 많이 느끼고 있다.

하지만 막상 설계하고 문서 정리하려고 하는 것은 여간 귀찮고 불편한 일이 아니었다.

이전 학기에 ‘소프트웨어 공학’ 이라는 수업에서 그러한 것들을 많이 공부했는데

책으로 다시 한번 정리해 보고 싶어서 소프트웨어 설계의 정석 책을 보게 되었다.

몰랐는데 요시하라 쇼자부로 라는 일본 분께서 지으신 책이었다

역시 코딩은 만국 공통어

목차

목차가 매우 자세하게 되어있는데, 목차가 매우 잘 짜여져 있어서

순서대로 읽으면 편안하게 이해할 수 있었다.

외부 설계, 내부 설계, 아키텍처 파트로 나누어 자세히 설명해서 내가 지금 부족한게 어떤 부분인지도 확실히 알았다.

좋았던 점

소프트웨어 설계의 정석은 설계라고 딱 설계 내용만 적혀 있는 것이 아니라 기본적이 내용들부터 차근차근 알려주신다.

개발자란 무엇을 하는 직업인지부터 시작해서 어떻게 경력을 쌓아가야 하는지 마치 선배의 조언을 듣는 듯 하다.

설계를 우습게 보지 말자를 보면 ‘테스트를 하기 전부터 품질은 이미 결정되어 있다’ 라는 말이 있는데

최근들어서 느끼는게 잘 설계된 소스코드는 프로그램을 돌려보지 않아도 잘 동작할 것 같다 ㅋㅋㅋ

구조와 함수 들이 잘 정리되어 있는 모습을 보면 나는 언제 저렇게 되나 하는 생각이 있었는데

이 책을 읽다보니 설계도 계속 해봐야지 느는거지 언젠가 뿅하고 늘진 않는 것 같다.

즉 지금부터라도 조금씩 해봐야 하지 ‘에자일’ 한것만 찾으면 안되겠다.

데이터베이스 정규화와 같은 개념들도 깊게는 아니지만 깔끔하고 이해하기 쉽게 설명해 주셔서

1, 2, 3차 정규화를 계속 보며 자신의 데이터베이스를 점검해 보라고 한다.

이걸 보니까 내 데이터베이스에 이상한 점이 있던 것들이 기억이 나서 수정을 하려고 한다.

모델링을 할때에는 차근차근 그림을 그려가며 어떤 식으로 이런그림이 나왔는지를 설명해 주셔서

더 쉽게 이해가 되었다.

소프트웨어 공학 수업보다 조금 더 이해가 잘됐던 것 같기도 ㅎㅎ

애자일

소프트웨어 공학 수업에서 배웠던 내용들이 많이 나오는데 워터풀, 점진적 개발 등등 이미 많이 접해봤던 내용들이다.

요즘 스타트업들을 보면 애자일 하게 개발한다며 홍보하는 경우들이 많은데

이 저자는 그것이 좋은 것은 맞지만 항상 옳은 것은 아니다 라고 한다.

애자일 이라는 것이 서류작업들을 생략하기 위한 핑계로 사용되는 경우가 있다고 하는데

나도 어쭙잖게 프로그램을 만들때는 이거 애자일이야 하고 핑계를 대며 진행했던 것 같다 ㅎ..

개발설계

소프트웨어 공학에서 계속 공부했고 과제로 진행했던 건 유스케이스와 스태틱 모델링, 다이나믹 모델링을 만드는 것이었다.

보면서 음음 당연히 해야지 하면서도 막상 내가 하려고 할때는 진저리가 났던 생각이 났다.

소프트웨어 설계의 정석 저자는 단순히 이렇게 해! 저렇게 해! 라고 하지 않고 그 이유를 납득시킬만큼 충분히 이해시켜 주신다.

이렇게 하는 건 이런 이유 때문이야! 라고 하니 안할 이유가 없잖아? 라고 되어버린다.

하지만 언제나 그렇듯 그런것들이 쌓이고 쌓이니 해야할게 수십개가 되어버린다 ㅋㅋㅋ

이후 내부 설계, 외부 설계, 아키텍쳐 설계 등으로 나누어 하나씩 설명을 진행하게 된다.

외부 설계, 내부설계, 아키텍쳐

외부 설계는 외부에서 들어온 입력을 처리하는 방법들이다.

여기서는 내가 잘 아는 유스케이스, UI 등이 포함되어 있어서 크게 어렵게 느껴지지는 않았다.

다만 그때는 과제를 하며 막연하게 느껴졌던 부분들도 확실하게 개념을 잡고 갔다.

유스케이스가 중요한데 왜인지 하기 싫으니…

소프트웨어 설계의 정석 내부 설계도 크게 어려운 내용들은 없었다.

다만 내가 제일 특이하게 느껴졌던 부분은 아키텍쳐 설계 부분이었다.

흔히 말하는 패턴들 (싱글톤 등등..) 이 포함되어 있는 부분인데

내가 이부분은 정말정말 무지하다고 느꼈다. 오죽하면 책의 내용을 한번 쓱 읽어서는 잘 이해가 안되었다.

결론

소프트웨어 설계의 정석의 마지막 말이다. 우수한 설계자라면 우수한 프로그래머일 가능성이 높다.

좀더 설계를 공부해서 잘 짜여진 프로그램을 만들어야겠다는 생각이 많이 들었다.

등한히 했던 유스케이스나, 모델링 들도 간략하게나마 프로그램을 개발하기 전에 해봐야겠다.

이번 캡스톤 디자인2에서 적용시켜볼 생각이다.

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

heaven

Share
Published by
heaven
Tags:

Recent Posts

[책 리뷰] 비전공자도 배울 수 있는 타입스크립트

비전공자도 배울 수 있는 타입스크립트 자바스크립트는 이상하게 정이안가는 언어중에 하나이다. 분명 web을 처음 시작했을 때…

2개월 ago

[책 리뷰] IT 엔지니어를 위한 AWS 운영의 기본과 노하우

IT 엔지니어를 위한 AWS 운영의 기본과 노하우 선택한 이유 AWS는 정말 공부해야지 공부해야지... 하면서도 쉽게…

4개월 ago

[책 리뷰] 개발하는 남자의 핸즈온 플러터 – 김성덕

개발하는 남자의 핸즈온 플러터 최근 계속해서 플러터를 개발할 일들이 많은데, 워낙 가지고 있는 강의들은 많은데…

5개월 ago

AI 사업계획서 독스헌트 docshunt 후기 – 초안잡을때 유용한듯!

갑자기 독스헌트 사업계획서? 아직 거창한 사업계획서를 쓸일은 없지만, 최근 진행하는 프로젝트의 지원금을 받을 수 있을까…

6개월 ago

[책 리뷰] 혼자 해도 프로처럼 잘 만드는 굿즈 제작 비법

이번에는 개발 관련 책이 아닌 특이하게 굿즈 제작 비법 책이다 혼자 해도 프로처럼 잘 만드는…

6개월 ago

[책 리뷰] – 더 나은 프로그래머 되는 법 – 피트 구들리프

더 나은 프로그래머 되는 법 나는 아직 현업에서 일을 많이 하지 않았기 때문에 '더 나은'이라는…

8개월 ago