it leader
article thumbnail

 

 

유현한 소프트웨어를 만드는 설계 원칙 - 한빛미디어

 

 

 

 

 

안녕하세요 피슈입니다.

 

오늘 소개할 책은 유연한 소프트웨어를 만드는 설계원칙 이라는 책입니다. 우리가 소프트웨어 개발을 할 때 부딪히는 일들 중에 

하나지요.. 확장성을 가지고 개발을 하는 것 입니다. 하지만 개발이 항상 우리의 이러한 상황을 고려해 주지 않지요.. 정해진 리소스안에서

개발을 해야되는 상황, 곧 일정과 주저진 인원내에서 수행을 해야되기 때문입니다. 그렇지만 미래에 다가올 추가 개발건이나, 고도화를 

염두해 둔다면 프로젝트의 확장성은 염두해두어야 할 것입니다. 오늘 책은 개발자들의 이러한 고민에 대한 가이드를 줄 책이라고 생각합니다. 책 소개를 하면서 어떤 내용들이 담겼는지 간단하게 이야기 해보겠습니다.

 

 

SICP : Structure and Interpretation of Computer programs 의 저자 중 한명인 제럴드 서스먼이 공저한 책

 

계산과 건축

    프로그램 설계를 건축에 비유할 수 있을 것입니다. 건축가는 건물 부지의 성격과 건물 구조의 요구조건을 파악한 후 파르티 parti라는 개념을 이용해서 설계과정을 시작한다고 합니다. 학교건물을 설계할 때를 예로들면 복도, 화장실, 기계실 승강구 같은 기반 구조 요소들과 

연구실, 교실, 사무실 같은 서비스 받는 공간을 분리함으로써 건축 설계 문제를 어떤 기준으로 나누기도 합니다. 또한 이러한 나눠진 공간은

각각의 목적으로만 동작이 가능한 구조물이 아닐 것입니다. 사람의 동선을 고려해야 할 것이고, 난방 과 공기 조절기 배관과 상하수도관,

전기 배선과 통신시스템, 도로를 배치함으로써 온전한 공간으로서 활용이 되어질 것입니다.  프로그램도 마찬가지로 각기 목적에 따른 모듈이 있을 것이며 공통적으로 사용되는 라이브러리들이 필요할 것이고 특정 사용자의 패턴을 만족시키기 위해서만 동작하는 모듈이 필요할 것입니다. 이러한 것이 설계하는 과정에서 잘 계산이 되어야지만, 적절한 비용과 시간을 들여 프로그램을 개발할 수 있게 될 것입니다.

 

 

 

설계의 원칙

    이 책에서는 다양한 설계원칙에 대해서 이야기 하고 있습니다. 산술 연산의 조합, 패턴 부합, 계층화, 전파 등등의 방법으로 말입니다.

각 장에서는 개념에 대한 설명과 코드로 이야기를 하고 있습니다. 예를 들어 체스 게임에 대한 프로그램을 설계한다고 할 때 어떻게 설계를 해야 효율적인지에 대해서 설명하고 있습니다. 책을 읽으면서, 다양한 확장 방법에 대해서 알게 되었습니다. 특히나 체스 게임에 비유한 설계를 이야기 할 때에는 명확하게 이해가 되어 좋았습니다. 처음에는 체스 규칙에 적용된 함수를 적용했다면, 확장성을 적용한 모델에서는 다른 형태의 보드게임에 적용을 할 수 있도록 만드는 개념에 대해 설명을 하여서 확장성이란 어떤 것인지에 대해 좀더 이해가기가 쉬웠습니다.

다만 중간중간 어려운 개념이 나오거나, 수학식이 나오기도 하여 조금 당황스럽기도 하였지만 말입니다.

 

스킴이라는 언어를 이해해야지만 이첵을 100% 이해할 수 있다.

 

총평

    프로그램을 설계하면서 이런저런 고민을 했던 프로그래머라면 이 책은 한번쯤은 읽어봐도 좋을만한 이론 서적이 아닌가 싶습니다.

다만 여러가지 허들이 있는데, 첫번째로는 스킴 입니다. 스킴이라는 언어로 작성한 예시를 가지고 설명을 하는데, 언어의 문법이 다소 생소합니다. 그래서 소스코드만 보면 예시가 잘 이해가 되지 않을 수 있습니다. 두번째로는 개념의 어려움입니다. 많은 개념들이 등장하는데

용어들이 참 생소합니다. 다소 난해한 수학 공식도 등장합니다. 수학과 친하지 않은 사람이라면 책이 다소 어렵게 느껴질 수 있을 것입니다.

한줄로 책에 대해 이야기 하보면, 설계에 대해 좀더 deep 하게 공부해보고 싶은 사람에게 추천! 입니다.

 

다음에 더 유용한 리뷰로 돌아오겠습니다. 끝!

 

 

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

 

profile

it leader

@dev__pixui

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!