본문 바로가기
📚 Books

책 '소프트웨어의 품격(Seriously Good Software)' 소개와 요약정리, 스터디 📕

by kukim 2022. 1. 8.
 

소프트웨어의 품격 - YES24

프로그래밍 언어의 기본을 익힌 독자를 대상으로 하는 책으로, 소프트웨어의 품질을 결정짓는 여러 가지 기준과 그 기준에 부합하는 소프트웨어를 개발하는 방법을 예제 바탕으로 설명한다. 더

www.yes24.com


Seriouly Good Softwar(번역, 소프트웨어의 품격), 내 직역으론 '겁나 좋은 소프트웨어?'란 책을 우연히 서점에서 발견했고 마침 페이스북 추천글이 있었다. 소프트웨어의 품질에 대해 생각하지 못했거나 파편화 되어 있던 지식을 이번 기회에 정리하고자 한다.

주제

이 책은 한 가지 예제(수조 시스템)를 18가지 다른 방법으로 구현하며 각 방법론에 대해 토론한다. 성능과 코드의 명료성, 여러 측면에서 소프트웨어 품질을 최대화하는 방법을 배운다. 크게 주제로는 컴퓨터 과학(여러 구조와 복잡도 이론, 분할상환 복잡도), 자바 프로그래밍(스레드 동기화와 자바 메모리 모델), 소프트웨어 공학(규약에 따른 설계 방법론과 테스팅 기법)을 다룬다.

1. 소프트웨어 품질을 결정하는 기준 이해와, 그 기준에 대한 개발 방법론에 대한 출발점으로 삼을 수 있고, 2. 품질 기준 사이에 발생하는 이슈에 대한 이해와 기회비용을 어떻게 다룰지 생각할 수 있게 해준다.

 

구성

1부 : 소프트웨어 품질(software quality) 개념 이해와 책 예제(수조 시스템) 소개

2부 : 여러 소프트웨어 품질을 살펴보고 최적화 수행 방법

  • 3장 : 시간, 성능 효율성 관점에서 구현한다. 레퍼런스(2장에서 구현한) 실행 시간을 수백 배(500배) 줄여본다. 상황에 따라 여러 성능 기준 사이의 충돌을 설명한다. :2022.01.20 - 실제 함수 사이에 최적의 시간 복잡도는 무엇일까? 🤖 
  • 4장 : 공간(메모리) 효율성 관점에서 구현한다. 객체 사용(50%)하고 안 하는 것(90%) 성능 차이를 비교한다.
  • 5장 : 모니터링 기반 신뢰성 보장을 위해 규약에 따른 설계 방법론을 소개하고 메서드 규약과 클래스 불변 조건에 기반한 런타임 체크와 assertion을 사용해 레퍼런스(2장)를 견고하게 만든다.
  • 6장 : 단위 테스트 관점에서 구현한다. 테스트 스위트 설계, 실행 기법, 코드 커버리지 측정 지표 활용
  • 7장 : 가독성에 맞춰 구현한다. 리팩터링
  • 8장 : 동시성과 스레드 안정성 관점에서 구현한다. 스레드 동기화 기본 개념부터 복잡한 기법까지
  • 9장 : 재사용성, 유사한 구조 클래스 재활용을 하고 제네릭을 실습한다.

부록 A : 코드 길이 15% 줄이기

부록 B : 소프트웨어 품질 기준을 통합해서 최종적인 예제를 완성한다.

 


⛓ Reference

책 소스코드 (Java)

 

GitHub - AcornPublishing/seriously-software: 소프트웨어의 품격 [자바로 살펴보는 좋은 소프트웨어 개발]

소프트웨어의 품격 [자바로 살펴보는 좋은 소프트웨어 개발]. Contribute to AcornPublishing/seriously-software development by creating an account on GitHub.

github.com

진행한 스터디

 

GitHub - Quokka-Squad/Seriously-Good-Software: 책 "Seriously Good Software(소프트웨어의 품격)"을 공부합니다.

책 "Seriously Good Software(소프트웨어의 품격)"을 공부합니다. Contribute to Quokka-Squad/Seriously-Good-Software development by creating an account on GitHub.

github.com

 

댓글