예제로 배우는 소프트웨어 디자인
그렉 윌슨 지음, 김성원 옮김 / 영진.com(영진닷컴) / 2024년 10월
평점 :
장바구니담기


*** 이 글은 리뷰어스 클럽의 소개로 출판사로부터 도서를 제공받아 주관적으로 작성한 리뷰입니다 ***




이 책은 운영체제 상의 다양한 시스템 프로그램과 개발 도구들의 기능에 대해 자바스크립트 언어에 기반한 구현을 통해 주요 소프트웨어 설계 패턴과 처리 알고리즘을 소개하는 소프트웨어 개발서적이다.


책의 구성과 내용은 기존의 공용 운영체제인 유닉스(혹은 리눅스) 계열에서 사용하던 시스템 프로그램들(파일 백업, 데이터 테이블, 패턴 매치, 표현식 해석하기, 페이지 템플릿, 레이아웃 엔진 등)과 개발 도구들(유닛테스트, 빌드매니저, 파일보간기, 모듈로더, 스타일체커, 코드 제너레이터, 가상머신, 디버거 등)의 기능들을 자바스크립트 언어와 다양한 라이브러리 공개 소스 코드를 사용하여 구현하는 내용을 담고 있다.


저자는 소프트웨어 개발과 교육 전문가 그렉 윌슨이다.


---


소프트웨어 디자인이라는 책 제목에서 예상되듯이 책의 내용은 소프트웨어 초보자를 위한 책이 아니고, 다양한 컴퓨터 공학 분야의 지식과 경험을 전제로 작성되어 있다.


이 책에서 자바스트립트(Javascript) 언어를 사용하기 때문에 기본적으로 java 문법과 지식이 필수적이고, Node.js라는 자바스크립트 코드 실행 플랫폼 환경을 설치하고 사용 예제를 실행해야 한다.

Node.js 플랫폼에서 제공하는 다양한 라이브러리 소스 파일들을 통해 클래스와 함수들을 사용함으로써, 추가적으로 확장된 응용 스크립트 프로그램을 작성하는 방식이다.




라이브러리의 종류의 범위가 고급 기능을 수행하는 프로그램들이다: 기본적인 파일과 디렉토리 검색을 위한 문자열 해석과 패턴 매칭, HTML 문서 페이지 출력을 위한 템플릿과 레이아웃 엔진을 만드는 것부터 유닛테스팅을 위한 테스트 케이스 생성, 소프트웨어 개발 과정에서 버전 관리를 위한 패키지 매니저가 있고, 응용 프로그램으로 가상머신 코드가 포함되어 있다.


책에서는 상세한 배경 설명없이 관련 용어들이 사용되고 있어서 참조가 필요해 보이는 내용들도 있다: 가장 빈번하게 사용되는 함수 인자 호출 개념은 자바(Java) 언어, 추상 구문 트리(AST)는 자료 구조, 유닛 테스팅의 코드 커버리지 개념이나 버전 관리 개념은 소프트웨어 공학, 웹 페이지용 HTMLCSS 언어에 관한 지식 등이 대표적이다.


개인적으로 인상적인 내용은 아무래도 단순 가상머신 코드가 흥미로운 부분이다: 지금은 잘 사용하지 않는 어셈블리 언어를 흉내 낼 수 있는 가상머신 상의 작동 프로그램 코드를 만들어 볼 수 있다는 점이 흥미롭다.




주의할 것은 소프트웨어 설계는 이 책에 사용된 예제 코드는 운영체제 상에서 실행되는 시스템 프로그램의 기능을 자바 스크립트라는 객체 지향 언어의 환경에서 작성되었기 때문에 객체 지향 프로그램적 설계일 수밖에 없다는 점이다.

전반적으로 보면, 다양한 시스템 프로그램의 예제들을 통해 소프트웨어 설계에 대한 개념을 얻을 수 있는 고급 수준의 소프트웨어 개발서라는 생각이 든다.



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