올바른 소프트웨어 설계
유발 로이 지음, 남기혁 옮김 / 영진.com(영진닷컴) / 2024년 8월
평점 :
장바구니담기


우리는  1980년대이후 많은 소프트웨어를 사용해 왔습니다. MS오피스, 아래한글, 포토샵 등 이러한 소프트웨어이 대표적이고 유명하죠. 이러한 소프트웨어들이 업무를 편하게 해주고 발전시켜서 생산성을 크게 발전시켜왔습니다. 하지만 최근에는 소프트웨어개발과정에서 많은 문제가 발생하고 있다고 합니다. 과거에 비해 실패도 늘고 이로인해 시간과 비용에서 큰 대가를 치루게 된다고 합니다. <올바른 소프트웨어 설계>는  소프트웨어 공학의 원칙과 소프트웨어 시스템과 프로젝트에 적용하는 방대한 도구와 기법을 알려준다고 합니다.  이런 기법과 방법으로 비용, 일정, 요구사항, 인력충원, 유지보수, 품질 등에서 발생하는 문제를 해결하는 스포트웨어 아키텍트를 양성하는 내용을 담았습니다. 



저자는 유발로이 IDesign설립자입니다. 마이크로소프트의 핵심개발자였습니다.  주요 개발자회의에서 주요강연자였으며 MS선정'Software Legend'로 선정될 정도로 세계적인 소프트웨어 아키텍트입니다. 




저자는 '더 메서드'라는 소프트웨어 개발기법을 소개합니다. 이는 '시스템설계 + 프로젝트 설계'를 뜻합니다. 그리고 시스템설계를 작은 모듈단위 컴포넌트로 쪼개는 방식이고 이를 분해,구조,조합해서 시스템아키텍처를 만들고 프로젝트설계는 시스템설계보다 휠씬더 복잡해서  더 많은 도구와 아이디어 그리고 기법이 필요하다고 합니다. 그래서 시스템설계는 1부, 프로젝트설계는 2부에 둔모양입니다.  이렇게 두부분으로 나눠두었지만 실제는  두 설계가 결합된 방법이죠. 그래서 이를 '설계프로세스'라고 합니다.  벌써 이 정도 설명도 힘든게 사실입니다만 ㅠㅠ  하옇든 더 메서드는 시스템설계와 프로젝트 설계의 좋은 시작점이라고 합니다. 이 부분에 시간과 노력이 충분히 들어가야 한다고 강조합니다. 




시스템설계는 분해, 구조,조합 순으로 원칙들을 설명합니다.  분해는 시스템구성요소를 구분하는 걸 이야기합니다. 이것을 시스템분해라고 합니다. 이부분이 매우 중요하다고 합니다.  그 예를 기존시스템의 기능분해를 통해 증명하고 변동성 기반 분해에 대해 알아봅니다. 물론 어렵지만 실무에서 확실히 무언가를 느낄 듯합니다. 그리고 구조는 시스템의 구조를 정의하고 기능 요구사항을 나열합니다. 이부분은 매우 힘든 부분이라 계층형접근법으로 편하게 분리해야 합니다.  누구, 무엇, 어떻게, 어디로 질문을 해서 검증을 합니다.  조합은 검증과 밀접한 관계가 있다고 합니다.  요구사항이 변경되었을때도 조합형 설계는 변형되면 안된다고 합니다. 이러한 분해,구조,조합을 확인할 수있는 시스템설계사례로  확인하는 작업을 합니다. 



프로젝트 설게는  시스템을 구축하는 설계입니다. 그래서 시스템설계의 연장선이라고 합니다.  이 설계는  시스템설계와 프로젝트설계를 결합하는 과정이라는 겁니다. 결국 소프트웨어 아키텍처의 몫이라고 합니다.  흥미로운 점은 성공의 기준입니다.  저자는 성공의 기준을 약속을 지키는것이라고 합니다. 품질을 낮춰서 성공이라고 하면 안된다는 거죠. ㅠㅠ 팀이야기도 나오고, 네트워크 다이어그램도 그리고 비용, 역할 등 다양한 기법이 소개가 됩니다. 그리고 프로젝트설계에서 시간과 비용을 설정합니다. 서비스기획에서도 시간과 비용은 중요한 항목입니다.  저는 주니어개발자수준이라 내용이 쉽지는 않았습니다. 대규모 소프트웨어의 손톱수준의 기능 코딩을 맡고 입장에서 전체를 이해하는 것은 쉽지는 않습니다만  고품질 소프트웨어가 어떻게 만들어지는지에 관한 분명한 Righting 수준은 보았습니다.



본 도서는 리뷰어스클럽으로부터 무상으로 제공받아 주관적인 리뷰를 했습니다. 



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo